spring boot 实现自动解析,魔力就在于@SpringBootApplication注解,之前了解该注解的原理,但从未死磕过源代码,现在有时间,则看一下详细的源代码说明
spring boot自动装配解析
加入该注解,即可启动自动装配(不了解自动装配概念的,建议百度了解)
@SpringBootApplication的源码:
spring boot自动装配解析
@Target、@Retention、@Documented、@Inherited没有什么好说的,主要看剩下的几个注解:
@SpringBootConfiguration:只是对@Configuration作了一层封装,启动的作用都一致,熟悉spring的同学一看就懂,没什么新意
spring boot自动装配解析
@ComponentScan:spring的注解,没什么特别的,注解中说明了哪些类型的bean不会被装入spring的容器,具体为类型为自定义的TypeExcludeFilter与AutoConfigurationExcludeFilter这两种类型的对象不会被装载入spring容器

@EnableAutoConfiguration:重点来了,spring的所有魔力,都来自于该注解,那么我们就来中重点分析一下该注解
spring boot自动装配解析
该注解的包含的其他注解都没什么新东西,主要看@Import这个注解(不了解这个注解的功能的,请好好看看spring)引入的AutoConfigurationImportSelector类
spring boot自动装配解析
经过一层一层的剖析,重点来了,看这个方法,首先判断是否启用了自动装配
spring boot自动装配解析
spring boot自动装配解析
从属性文件中获取spring.boot.enableautoconfiguration配置,如配置成true或者未配置,则认为启动了自动装配,为false则为不启动自动装配,也就是说,可以通过该参数的配置,完全禁止spring的自动装配(但估计没人会用吧,毕竟这是spring boot的我认为是最NB的特性)
如启动自动配置,继续向下,标红的重点方法,进入
spring boot自动装配解析
spring boot自动装配解析
从这就能看出要要加载META-INF/spring.factories文件,也可以继续往里面进去查找
spring boot自动装配解析
spring boot自动装配解析
实锤,从META-INF/spring.factories加载,看看META-INF/spring.factories文件内容
spring boot自动装配解析
该文件中的配置类被加载入容器,完成了自动装配的整个过程
spring boot的自动配置高级在如果开发人员自己实现了功能,则自动装配对应就会失效,使用开发人员自定义的来实现,能实现这种效果,主要依赖于spring的
@ConditionalOnMissingBean 类型的标签
spring boot自动装配解析

相关文章:

猜你喜欢
相关资源
相似解决方案