转载

Spring Boot启动流程和自动配置原理

Java程序员应该都知道,每个Spring Boot都有一个启动类,Spring Boot的启动就是执行的该类的main方法。如下图,main方法中就是执行SpringApplication.run方法。

Spring Boot启动流程和自动配置原理

启动流程

先总结一下Spring Boot启动流程。

MTEA-INF/spring.factories

Spring Boot自动化配置

我们知道,使用Maven坐标导入开发所需的jar包后,同时一些默认配置也会生效。那么Spring Boot又是怎么为这些jar包配置默认值的呢? 答案就在Spring Boot的启动类上的注解@SpringBootApplication中。

Spring Boot启动流程和自动配置原理

@SpringBootApplication主要由三个注解构成: @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan

Spring Boot启动流程和自动配置原理

@EnableAutoConfiguration 底层是由两个注解组成, @AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)

Spring Boot启动流程和自动配置原理

@Import(AutoConfigurationImportSelector.class) 自动配置的奥妙就在这里啦,这个类导入了很多自动配置类,debug一下可以发现,其读取的是classpath下的 META-INF/spring.factories 下的自动配置类

Spring Boot启动流程和自动配置原理

自动配置类如下:

Spring Boot启动流程和自动配置原理

总结

Spring Boot通过主启动类上的@SpringBootApplication中的@EnableAutoConfiguration读取了类路径下的 META-INF/spring.factories 下EnableAutoConfiguration的配置类,但是这些配置类使用了@ConditionalOnClass,需满足一定的条件才会激活配置,这些配置类写入了默认的配置。

原文  https://juejin.im/post/5dd7f67251882572fd108c95
正文到此结束
Loading...