springboot加载过程

简介: springboot加载过程

整体流程:

加载-->装配-->注册


在写@Component注解的时候,有没有想过spring容器是怎么加载进去的?

一、加载

sprinboot项目启动需要加载的文件主要有两类,一类是starter组件及其他第三方组件;另一个是业务代码(包括2和3);


在springboot启动程序SpringApplication.run()方法中:

1)加载spring.factories文件

springboot 的SPI机制

load()

--->SpringFactoriesLoader.loadSpringFactories((@Nullable ClassLoader classLoader))

--->Enumeration urls = classLoader != null ? classLoader.getResources("META-INF/spring.factories") : ClassLoader.getSystemResources("META-INF/spring.factories")

-->Properties properties = PropertiesLoaderUtils.loadProperties(resource)

-->cache.put(classLoader, result)

2)加载当前启动类

将当前启动类作为一个beanDefinition注册到registry(注册表)中

loader.load()

-->load(GroovyBeanDefinitionSource source);

3)加载配置文件

SpringApplicationRunListeners listeners = getRunListeners(args) # 这个listeners中包含一个ConfigFileApplicationListener

-->ConfigFileApplicationListener.onApplicationEvent(ApplicationEvent event) #  监听事件并执行 onApplicationEnvironmentPreparedEvent((ApplicationEnvironmentPreparedEvent) event)

-->new Loader(environment, resourceLoader).load() # 最终完成加载


相关文章
|
5月前
|
前端开发 JavaScript Java
Springboot 使用thymeleaf 服务器无法加载resources中的静态资源异常处理
Springboot 使用thymeleaf 服务器无法加载resources中的静态资源异常处理
196 0
|
8月前
|
Java Spring
【面试题精讲】说一说springboot加载配置文件优先级
【面试题精讲】说一说springboot加载配置文件优先级
|
9月前
|
Java Maven
启动SpringBoot 错误: 找不到或无法加载主类 com.xx.xxApplication
1、在项目名称上右击–Reload from disk 2、清理项目里面的class文件进行重新编译, 鼠标点击右侧Maven,找到项目名称,然后点击Lifecycle中的clean/compile/install
344 0
|
1月前
|
缓存 前端开发 Java
SpringBoot启动后加载初始化数据
SpringBoot启动后加载初始化数据
|
1月前
|
Java 测试技术 数据库
SpringBoot启动时设置不加载数据库
SpringBoot启动时设置不加载数据库
11 0
|
2月前
|
XML Java 数据格式
【springboot原理篇】Bean的加载方式,面试必看
【springboot原理篇】Bean的加载方式,面试必看
|
8月前
|
Java Spring
SpringBoot 项目打成 jar 后,如何加载外部的配置文件?
SpringBoot 项目打成 jar 后,如何加载外部的配置文件?
291 0
|
5月前
|
Java Spring
SpringBoot中配置文件加载位置与优先级
SpringBoot中配置文件加载位置与优先级
59 0
|
6月前
|
缓存 Java 数据库
Springboot项目启动时加载数据库数据到内存
Springboot项目启动时加载数据库数据到内存
|
6月前
|
缓存 NoSQL Java
springboot 启动加载数据库数据到redis缓存
springboot 启动加载数据库数据到redis缓存
167 0