自动装配
1)
springboot启动类上的核心注解是个合成注解,里面有个注解@EnableAutoConfiguration,作用是开启自动配置功能,这个注解里用@Import注解向容器导入了AutoConfigurationImportSelector组件,在这个类中有个方法(getCandidateConfigurations)会获取所有需要导入到容器的配置类,这些配置类是通过扫描在当前系统里面所有的META-INF/spring.factories位置的文件,在文件里Auto Configure注释下面标注的,都是要导入到容器中的,然后这些配置类就会被导入到容器中。
2)
被导入的自动配置类,通过@Conditional注解按照条件装配,按需配置,只有条件生效的时候才生效,生效后自动配置类会给容器中装配很多组件,并且很多配置信息即使没有在配置文件中声明,也会因为ConditionalOnProperty注解中的matchIfMissing=“true”默认当你是配置了。
3)
被装配的组件中用到的值都是通过@EnableConfigurationProperties注解从xxxProperties类的对象里拿,这个类因为EnableConfigurationProperties注解会开启配置文件属性绑定,在类中,ConfigurationProperties注解声明了绑定配置文件前缀为某某的数据项,springboot默认会在底层配好所有的组件,但是如果自己配置了,会以自己配置的优先。最后,只要容器中有这些组件,相当于这些功能就有了。