💡
原文日文,约11000字,阅读约需27分钟。
📝
内容提要
Spring Boot是Java开发领域的标配之一,通过@EnableAutoConfiguration注解实现自动化配置。自动化配置的入口是AutoConfigurationImportSelector类的process方法,根据条件判断加载候选的自动化配置类。加载来源包括自定义starter和Spring Boot自带的自动化配置类。加载完成后,根据条件注解来决定配置类是否生效。
🎯
关键要点
- Spring Boot 是 Java 开发领域的标配,通过 @EnableAutoConfiguration 注解实现自动化配置。
- 自动化配置的入口是 AutoConfigurationImportSelector 类的 process 方法,根据条件判断加载候选的自动化配置类。
- 加载来源包括自定义 starter 和 Spring Boot 自带的自动化配置类。
- 自动化配置的关键注解是 @SpringBootApplication,其中 @EnableAutoConfiguration 表示开启自动化配置。
- AutoConfigurationImportSelector 类负责加载自动化配置类,主要通过 process 方法实现。
- getAutoConfigurationEntry 方法用于获取候选的自动化配置类,来源包括 spring.factories 文件和 Spring Boot 自带的配置类。
- isEnabled 方法判断自动化配置是否开启,可以通过 application.properties 配置关闭。
- removeDuplicates 方法用于移除候选自动化配置类中的重复项。
- getExclusions 方法获取被排除的自动化配置类,可以从注解的 exclude 属性和配置文件中获取。
- checkExcludedClasses 方法检查被排除的类是否有效,若无效则抛出异常。
- removeAll 方法从候选配置类中移除被排除的类。
- filter 方法根据项目依赖判断哪些自动化配置类生效,依赖关系存储在 spring-autoconfigure-metadata.properties 文件中。
- 获取的过滤器包括 OnClassCondition、OnWebApplicationCondition 和 OnBeanCondition,用于判断自动化配置类的生效条件。
- fireAutoConfigurationImportEvents 方法触发自动化配置类导入事件,完成自动化配置的加载。
➡️