- 什么是 SpringBoot 自动装配
通过注解或者一些简单的配置就能在 Spring Boot 的帮助下实现某块功能
- SpringBoot 是如何实现自动装配的
SpringBoot 的核心注解 SpringBootApplication
@SpringBootApplication
看作是 @Configuration
、@EnableAutoConfiguration
、@ComponentScan
注解的集合
@EnableAutoConfiguration
:启用 SpringBoot 的自动配置机制---重要注解@Configuration
:允许在上下文中注册额外的 bean 或导入其他配置类@ComponentScan
: 扫描被@Component
(@Service
,@Controller
)注解的 bean
接下来从EnableAutoConfiguration
这个重要注解一步步深挖(不贴代码了,大概了解,具体可以看参考链接):
-
EnableAutoConfiguration
只是一个简单地注解,自动装配核心功能的实现实际是通过AutoConfigurationImportSelector
类,AutoConfigurationImportSelector
实现了这个接口ImportSelector中的selectImports
方法,该方法主要用于获取所有符合条件的类的全限定类名,这些类需要被加载到 IoC 容器中 -
selectImports
方法中getAutoConfigurationEntry()
方法,这个方法主要负责加载自动配置类的
总结
Spring Boot 通过@EnableAutoConfiguration
开启自动装配,通过 SpringFactoriesLoader 最终加载META-INF/spring.factories
中的自动配置类实现自动装配,自动配置类其实就是通过@Conditional
按需加载的配置类,想要其生效必须引入spring-boot-starter-xxx
包实现起步依赖
参考链接:https://www.cnblogs.com/javaguide/p/springboot-auto-config.html