参考文章1: https://blog.csdn.net/u014745069/article/details/83820511
(讲解清楚,浅尝遏止)
参考文章2:https://www.cnblogs.com/xhj928675426/p/13189376.html
(源码更多,注重流程)
xxxProperties是如何注入IOC容器的?
@EnableConfigurationProperties
+ @Configuration
可以 使得 @ConfigurationProperties
标注的 XxxProperties
类自动注入到 IOC 容器
@Configuration
@EnableConfigurationProperties({MybatisPlusProperties.class})
public class MybatisPlusAutoConfiguration implements InitializingBean
参考1:https://blog.csdn.net/weixin_43087333/article/details/89604071
参考2:https://blog.csdn.net/zknxx/article/details/79183698
(详细、杂乱)
@Import 注解
参考:https://blog.csdn.net/mamamalululu00000000/article/details/86711079
@Import支持 三种方式
- 带有@Configuration的配置类(4.2 版本之前只可以导入配置类,4.2版本之后 也可以导入 普通类)
- ImportSelector 的实现
public String[] selectImports(AnnotationMetadata annotationMetadata)
:该方法返回的全限定类名字符串集合会注入到 Spring IoC 容器。
- ImportBeanDefinitionRegistrar 的实现
@Import 属性中的类或 ImportSelector 选择的类 或 ImportBeanDefinitionRegistrar 注册的类 都会被 Spring IoC 容器注入。
在 这些类被 IoC 容器注册后,再注册 @Import 标注的 bean。
而 @EnableXxx 配合 @Import 注解 就可以把相关功能的 bean 收集和注册到 IoC 容器。
@EnableAutoConfiguration 配合 @Import 注解,则将所有符合自动配置条件的 bean 定义加载到 IoC 容器。
自动配置条件依赖
在 org.springframework.boot:spring-boot-autoconfigure
的 org.springframework.boot.autoconfigure.condition
包下的类,只有这些类指定的条件成立,Springboot 自动配置才会生效。
如:
@ConditionalOnBean
:当指定的 Bean 存在时才开启配置@ConditionalOnClass
:当指定的 Class 类存在时才开启配置
org.springframework.boot.autoconfigure
包下还有一些类可以控制自动配置类的加载顺序。
如:
@AutoConfigureAfter
@AutoConfigureBefore