ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SpringBoot自动配置(待完善)

2026/8/4 21:48:30 拓冰建站 浏览量
SpringBoot自动配置(待完善)

@EnableAutoConfiguration

开启自动解析配置类

  • 根据 classpath 下的依赖自动配置
  • 条件注解自动配置
  • 配置文件配置属性spring.autoconfigure.*
  • 自定义类加@Configuration注解

ImportSelector和DeferredImportSelector

都可以实现配置类分组, DeferredImportSelector可以实现延迟加载配置类上bean

条件注解

  1. ConditionalOnBean:是否存在某个某类或某个名字的Bean
  2. ConditionalOnMissingBean:是否缺失某个某类或某个名字的Bean
  3. ConditionalOnSingleCandidate:是否符合指定类型的Bean只有一个
  4. ConditionalOnClass:是否存在某个类
  5. ConditionalOnMissingClass:是否缺失某个类
  6. ConditionalOnExpression:指定的表达式返回的是true还是false
  7. ConditionalOnJava:判断Java版本
  8. ConditionalOnJndi:JNDI指定的资源是否存在
  9. ConditionalOnWebApplication:当前应用是一个Web应用
  10. ConditionalOnNotWebApplication:当前应用不是一个Web应用
  11. ConditionalOnProperty:Environment中是否存在某个属性
  12. ConditionalOnResource:指定的资源是否存在
  13. ConditionalOnWarDeployment:当前项目是不是以War包部署的方式运行
  14. ConditionalOnCloudPlatform:是不是在某个云平台上

也可以利用@Conditional来自定义条件注解。

引入starter开启自动配置

例如引入spring-boot-starter-web依赖, 会自动解析Tomcat配置类, 利用条件注解实现

    @Configuration@ConditionalOnClass({Servlet.class, Tomcat.class, UpgradeProtocol.class})@ConditionalOnMissingBean(value = {ServletWebServerFactory.class},search = SearchStrategy.CURRENT)public static class EmbeddedTomcat {public EmbeddedTomcat() {}@Beanpublic TomcatServletWebServerFactory tomcatServletWebServerFactory() {return new TomcatServletWebServerFactory();}}