1 自动配置加载的过程

加载过程

  • @SpringBootConfiguration,就是一个@Configuration配置类。定义这是一个配置类。
  • @ComponentScan指定包扫描。扫描@Controller、@Component、@Repository、@Service注解定义的组件,控制翻转放入到容器当中
  • @EnableAutoConfiguration
    • @AutoConfigurationPackage自动配置包。
      • @Import(AutoConfigurationPackages.Register.class)利用register,将指定的包下的所有配置类注册到容器中。所以默认包路径是Main程序所在的包。将该包下的所有配置类放入到容器当中。包括@SpringBootConfiguration注解的启动类,这也是系统加载的第一个Configuration组件,放入到容器当中。
    • @Import(AutoConfigurationImportSelect.class)获取所有导入到容器中的配置类。利用Spring工厂加载器,从spring-boot-autoconfigure./META-INF/spring-factories中加载文件。Springboot一启动就要加载的所有配置类。会根据@Condition系列按需加载。

自动配置总结

  • Spring 加载所有的自动配置类
  • 每个自动配置类按照条件生效,默认会绑定配置文件指定的值。xxxProperties和属性配置文件进行绑定。
  • 生效的配置类给容器中装配很多组件。
  • 只要容器中有这些组件,相当于这些功能就有了
  • 只要用户配置了,以用户的优先。
    • 定制化,用自己的Bean替换底层的组件
    • 用户去看这个组件获取的配置文件是什么值就去修改什么值。
  • 自动装配规则:如果一个SpringBoot配置类只有一个默认的有参构造器,则该构造器的所有参数都会从容器中进行自动装配。相当于添加了@Autowire

需要怎么使用

  1. 引入场景依赖
    1. 看一下springboot官网的常见的starter场景
  2. 查看自动配置了哪些类
    1. 自己分析,引入场景对应的自动配置类,自动配置一般都生效了。
    2. 配置文件中debug=true开启自动配置报告,negative\postive会显示生效和不生效的配置
  3. 是否需要修改
    1. 参照文档修改配置项Properties配置绑定。参考官方的配置文档。
    2. 自定义或加入替换组件。通过@Bean替换组件
    3. 额外的自定义器。xxxCustomizer

debug=true

开启debug=true模式可以快速看到各个条件注解,哪一个满足了,哪一个没有满足!