java spring 03 启动细节

spring启动类ClassPathXmlApplicationContext,读取xml文件并且创建bean

public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, @Nullable ApplicationContext parent)throws BeansException {super(parent);setConfigLocations(configLocations);if (refresh) {refresh();}}

第一步.
01.其中的父类构造方法:

super(parent);

02
ClassPathXmlApplicationContext 继承 AbstractXmlApplicationContext:

public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContext

AbstractXmlApplicationContext的构造方法:

	public AbstractXmlApplicationContext(@Nullable ApplicationContext parent) {super(parent);}

03.AbstractXmlApplicationContext 继承 AbstractRefreshableConfigApplicationContext

AbstractRefreshableConfigApplicationContext的构造方法:

public AbstractRefreshableConfigApplicationContext(@Nullable ApplicationContext parent) {super(parent);}

04.AbstractRefreshableConfigApplicationContext 继承 AbstractRefreshableApplicationContext

AbstractRefreshableApplicationContext的构造方法:

	public AbstractRefreshableApplicationContext(@Nullable ApplicationContext parent) {super(parent);}

05.AbstractRefreshableApplicationContext 继承 AbstractApplicationContext

AbstractApplicationContext的构造方法:

public AbstractApplicationContext(@Nullable ApplicationContext parent) {this();setParent(parent);}public AbstractApplicationContext() {this.resourcePatternResolver = getResourcePatternResolver();}

getResourcePatternResolver() 解析资源的函数,比如xml文件

protected ResourcePatternResolver getResourcePatternResolver() {return new PathMatchingResourcePatternResolver(this);}

06.AbstractApplicationContext的相关属性

   /** Logger used by this class. Available to subclasses. *///日志protected final Log logger = LogFactory.getLog(getClass());/** Unique id for this context, if any. *///唯一标识符private String id = ObjectUtils.identityToString(this);/** Display name. */private String displayName = ObjectUtils.identityToString(this);/** Parent context. */@Nullableprivate ApplicationContext parent;/** Environment used by this context. */@Nullableprivate ConfigurableEnvironment environment;/** BeanFactoryPostProcessors to apply on refresh. *///BeanFactoryPostProcessor的集合private final List<BeanFactoryPostProcessor> beanFactoryPostProcessors = new ArrayList<>();/** System time in milliseconds when this context started. */private long startupDate;/** Flag that indicates whether this context is currently active. */private final AtomicBoolean active = new AtomicBoolean();/** Flag that indicates whether this context has been closed already. */private final AtomicBoolean closed = new AtomicBoolean();/** Synchronization monitor for the "refresh" and "destroy". */private final Object startupShutdownMonitor = new Object();@Nullableprivate Thread shutdownHook;/** ResourcePatternResolver used by this context. */private final ResourcePatternResolver resourcePatternResolver;/** LifecycleProcessor for managing the lifecycle of beans within this context. */@Nullableprivate LifecycleProcessor lifecycleProcessor;/** MessageSource we delegate our implementation of this interface to. */@Nullableprivate MessageSource messageSource;

在这里插入图片描述
第二步.setConfigLocations(configLocations) 设置配置文件的路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 表中的rowid会变动吗

oracle中访问select能够以最快的方式访问表中的一行的方法就是使用rowid,但是我们并不能使用rowid作为表主键。 在Oracle数据库中&#xff0c;ROWID是一个伪列&#xff0c;用于唯一标识表中的每一行记录。它起着几个关键的作用&#xff1a; 唯一标识&#xff1a;ROWID可以唯一…

python 亲测有效:无法连接互联网,离线部署python运行环境与安装包

**这里写目录标题** 安装包准备-在网络条件下下载所需要的第三方库安装包一、提取第三方库目录到requirements.txt二、批量下载requirements.txt的whl文件 安装包复制到无网络条件下&#xff0c;安装第三方库安装包**可能存在的问题 报错信息&#xff0c;欢迎私信&#xff0c;指…

android开发框架mvp,Android面试心得必备技能储备详解

面试复习路线图 我之前复习&#xff0c;大多都在20点以后&#xff0c;因为晚上比较能集中注意力&#xff0c;制定一个学习计划&#xff0c;切勿零散的复习&#xff0c;最好是系统的复习&#xff0c;才能胜却在握 主要内容如下&#xff1a; BAT的面试题目相关性能优化相关相关…

Qt之插件

插件结构 #mermaid-svg-HMxjwDgwwRejLSQ5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-HMxjwDgwwRejLSQ5 .error-icon{fill:#552222;}#mermaid-svg-HMxjwDgwwRejLSQ5 .error-text{fill:#552222;stroke:#552222;}#…

算法设计.

文章目录 1. 贪心算法&#xff1a;只看当前1.1 零钱兑换问题&#xff1a;力扣322 2. 活动选择问题3. 动态规划3.1 不同路径&#xff1a;3.2 0-1背包问题3.3 完全背包问题3.4 零钱兑换-动态规划 4. 最长公共字串--动态规划5. 最长公共子序列6. 最长递增子序列7. 打家劫舍8. 全排…

事务、视图、索引、数据备份和恢复

1.事务 事务&#xff08;TRANSACTION&#xff09;是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库操作命令要么都执行&#xff0c;要么都不执行。 事务是一个不…

信息熵 (Entropy)

在深度学习和机器学习中&#xff0c;熵是一个衡量不确定性或信息量的关键概念。它在各个方面发挥着作用&#xff0c;从数据的压缩和分布的特性分析&#xff0c;到模型的正则化和决策过程的优化。以下是熵在深度学习中的一些关键知识点&#xff1a; 信息熵 (Entropy) 信息熵是…

04. Nginx入门-Nginx WEB模块

测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径&#xff1a;/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…

如何使用宝塔面板部署MySQL数据库,并结合内网穿透实现固定公网地址远程连接

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.1 开放局域网端口3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几…

Android drawable selector

Android drawable selector 描述使用备份背景颜色 描述 Android 可绘制选择器&#xff08;drawable selector&#xff09;是一种可根据不同状态显示不同可绘制对象的 XML 资源。它通常用于实现按钮、列表项等控件的状态变化效果。 可绘制选择器的基本结构 一个可绘制选择器由…

Mybatis-Plus——04,自动填充时间(新注解)

自动填充&#xff08;新注解&#xff09; 一、数据库添加两个字段二、实体类字段属性上增加注解三、编写填充器四、查看结果4.1 插入结果4.2 修改结果 五、同步修改5.1实体类属性改成 INSERT_UPDATE5.2 在填充器的方法这里加上 updateTime5.3 查看结果————————创作不易…

【前缀和】AcWing. 562 / Google Kickstart2018 Round H Problem B《壁画》(c++)

1.题目说明 Thanh 想在一面被均分为 N 段的墙上画一幅精美的壁画。 每段墙面都有一个美观评分&#xff0c;这表示它的美观程度&#xff08;如果它的上面有画的话&#xff09;。 不幸的是&#xff0c;由于洪水泛滥&#xff0c;墙体开始崩溃&#xff0c;所以他需要加快他的作画…

视频号爆爽短剧推广,一键搬运,傻瓜式操作,日入2000+

首先&#xff0c;我想问下有没有人尝试过短剧推广&#xff0c;是否感觉最近短剧推广变得困难&#xff0c;或者收益甚微。这可能是因为许多人都在抖音、快手等大型平台上进行短剧推广&#xff0c;竞争非常激烈&#xff0c;就像在争夺一块有限的蛋糕&#xff0c;自然难以获得满意…

一键生成超好用的简历设计模板

对于缺乏工作经验和职业规划的应届生而言&#xff0c;使用简历设计平台&#xff0c;辅助我们完成简历分区、排版和美化流程&#xff0c;早就成为简历设计环节的 “潜规则”。这里我们挑选了 5 个能够实现免费下载、一键生成的简历设计平台&#xff0c;供大家参考借鉴。 即时设…

剑指RT-DETR改进RepVB:最新重参数化结构 顶会二次改进升级版,最新开源移动端网络架构

💡本篇内容:剑指RT-DETR改进RepVB:最新重参数化结构 顶会2023 二次改进升级版 最新开源移动端网络架构,速度贼快 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡:重点:该专栏《剑指RT-DETR原创改进》只更新改进 RT-DETR …

与hr沟通的话术记录

投简历的时候&#xff0c;能不能获得面试机会&#xff0c;取决于hr是否足够信赖你的简历。如果人家不够信赖你的简历&#xff0c;相信你也没有面试机会。 然后&#xff0c;第二个就是&#xff0c;与hr在沟通的时候&#xff0c;不要谈及自己的缺点&#xff0c;无论是面试前&…

洛谷P1888 三角函数

输入一组勾股数 a,b,c&#xff08;abc&#xff09;&#xff0c;用分数格式输出其较小锐角的正弦值。&#xff08;要求约分。&#xff09; 输入格式 一行&#xff0c;包含三个正整数&#xff0c;即勾股数a,b,c&#xff08;无大小顺序&#xff09;。 输出格式 一行&#xff0…

LLaMA模型的发布与创新潮流

时间线从2023年2月24日开始&#xff0c;Meta推出了LLaMA模型&#xff0c;虽然开源了代码&#xff0c;却没有开源模型权重。LLaMA模型可以说是相对较小的&#xff0c;拥有7B、13B、33B和65B参数的几种版本&#xff0c;训练时间相对较长&#xff0c;因此相对于其大小而言能力强大…

C#进阶高级语法之LINQ:常用集合类的扩展方法

LINQ&#xff08;Language Integrated Query&#xff09;是.NET框架的一个组成部分&#xff0c;它提供了一种声明性的数据查询和操作方法&#xff0c;可以用于操作集合、数据库等各种数据源。LINQ扩展了C#和VB.NET等语言&#xff0c;使得开发者可以用类似于查询SQL语句的方式查…

H5双人五子棋小游戏

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html> <html> <…