参考文章1: https://blog.csdn.net/u014745069/article/details/83820511
(讲解清楚,浅尝遏止)

参考文章2:https://www.cnblogs.com/xhj928675426/p/13189376.html
(源码更多,注重流程)

  1. https://charming.blog.csdn.net/article/details/80222967

(实例)

xxxProperties是如何注入IOC容器的?

@EnableConfigurationProperties + @Configuration 可以 使得 @ConfigurationProperties 标注的 XxxProperties 类自动注入到 IOC 容器

  1. @Configuration
  2. @EnableConfigurationProperties({MybatisPlusProperties.class})
  3. 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支持 三种方式

  1. 带有@Configuration的配置类(4.2 版本之前只可以导入配置类,4.2版本之后 也可以导入 普通类)
  2. ImportSelector 的实现
    1. public String[] selectImports(AnnotationMetadata annotationMetadata) :该方法返回的全限定类名字符串集合会注入到 Spring IoC 容器。
  3. ImportBeanDefinitionRegistrar 的实现

@Import 属性中的类或 ImportSelector 选择的类 或 ImportBeanDefinitionRegistrar 注册的类 都会被 Spring IoC 容器注入。
在 这些类被 IoC 容器注册后,再注册 @Import 标注的 bean。

而 @EnableXxx 配合 @Import 注解 就可以把相关功能的 bean 收集和注册到 IoC 容器。
@EnableAutoConfiguration 配合 @Import 注解,则将所有符合自动配置条件的 bean 定义加载到 IoC 容器。

自动配置条件依赖

org.springframework.boot:spring-boot-autoconfigureorg.springframework.boot.autoconfigure.condition 包下的类,只有这些类指定的条件成立,Springboot 自动配置才会生效。
如:

  1. @ConditionalOnBean:当指定的 Bean 存在时才开启配置
  2. @ConditionalOnClass:当指定的 Class 类存在时才开启配置

org.springframework.boot.autoconfigure 包下还有一些类可以控制自动配置类的加载顺序。
如:

  1. @AutoConfigureAfter
  2. @AutoConfigureBefore