1.自动装配原理
- 什么是自动装配原理
springboot的自动装配就是 从spring.factories文件中获取项目启动时加载的自动配置类,并生成相应的Bean对象,然后将它们交给spring容器来帮我们进行管理。
- 自动装配原理
1、在启动类上有一个注解@SpringBootApplication,它的主要作用是标明该类是一个主配置类,并且是springboot的主程序类,这个注解包含3个子注解,分别是:
- @SpringBootConfiguration
- 该注解标明当前类是一个配置类,并且配置类也是容器中的组件
- @ComponentScan
- 指定扫描哪些组件
- @EnableAutoConfiguration
- 这个注解用于开启自动配置功能
- 这个注解又包含两个注解:
- 1.@AutoConfigurationPackage
- 2.@Import(AutoConfigurationImportSelector.class)
- @AutoConfigurationPackage注解,即自动配置包,它指定默认的包规则,将扫描主程序类的所在包及其子包下的所有组件并导入到容器中。底层实现是在这个类中利用了Registrar给容器中注入了一系列组件,将指定的一个包下的所有组件都注入进来,而这个包就是主程序类所在的包。这就是为什么我们在springboot开发中,将controller层或者service层等组件放在主程序同包或其子包下的原因。
- @Import(AutoConfigurationImportSelector.class)这个注解,它底层实现是在这个类中调用了一个getAutoConfigurationEntry()方法,这个方法又调用了getCandidateConfigurations()方法,获取所有的配置类,而这个方法又间接调用了loadSpringFactories()方法,关键就在这个方法,它会查找到所有META-INF/spring.factories位置的文件,而这个文件里边通过EnableAutoConfiguration=xxx写好了项目启动时加载的自动配置类。这些配置类在启动的时候会默认全部加载,但是最终会根据Springboot里边的条件装配规则@Conditional注解来按需加载配置类。
- 这个注解又包含两个注解:
- 这个注解用于开启自动配置功能