前言
SpringBoot主要解决了传统spring通过重量级xml配置bean的方式,实现了自动装配。
@SpringbootApplication讲解
总结@SpringBootApplication注解由三个注解共同完成自动装配,各个注解作用如下
@SpringBootConfiguration: 标记启动类为一个spring配置类
@ComponentScan 注解的作用是扫描启动类所在包下指定注解的类注册到IOC容器中(包括@Controller @Service @Compnent @Repository 等等)
@EnableAutoConfiguration通过 @Import 注解导入 AutoConfigurationImportSelector类,然后通过AutoConfigurationImportSelector 类的 selectImports 方法去读取需要被自动装配的组件依赖下的spring.factories文件配置的组件的类全名,并按照一定的规则过滤掉不符合要求的组件的类全名,将剩余读取到的各个组件的类全名集合返回给IOC容器并将这些组件注册为bean。
可以看出 spring.factories 文件可以将 spring-boot 项目包以外的 bean(即在 pom 文件中添加依赖中的 bean)注册到 IOC 容器中。由于@ComponentScan 注解只能扫描 spring-boot 项目包内的 bean 并注册到 IOC 容器中,因此需要@EnableAutoConfiguration 注解来注册项目包外的bean。而 spring.factories 文件,则是用来记录项目包外需要注册的bean类名。
参考链接: spring.factories 的妙用
参考链接
参考链接: springboot实现自动装配