Skip to Content

功能

  • 通过一系列的条件注解和内建的自动配置类,根据应用程序中的类路径属性配置,自动为应用配置合适的 Spring Beans
    • 条件注解:确保只有在特定条件满足时,相应的配置才会被激活
    • 自动配置类:spring-boot-autoconfigure 模块中包含了许多自动配置类,这些类都是可能被 Spring 容器加载的 @Configuration 类。它们会在应用启动时根据条件注解判断是否需要加载
    • 类路径:根据类路径中的配置注解,自动加载配置
    • 属性配置:通过 application.yml 文件进行属性配置,这些属性会注入到 Bean 中,自动配置类也会根据这些属性来决定是否进行自动配置

细节

  1. 通过 @EnableAutoConfiguration 注解启动自动配置功能
  2. 通过 @Configuration 注解标记自动配置类
  3. 通过 spring.factories 文件中的配置来查找哪些自动配置类需要被加载
  4. 通过 @Conditional 注解来根据特定的条件判断是否启用某些配置
    • @ConditionalOnClass:如果类路径中包含指定的类,配置才会生效。
    • @ConditionalOnMissingClass:如果类路径中没有指定的类,配置才会生效。
    • @ConditionalOnBean:如果上下文中存在指定的 Bean,配置才会生效。
    • @ConditionalOnMissingBean:如果上下文中不存在指定的 Bean,配置才会生效。
    • @ConditionalOnProperty:如果指定的配置属性存在且满足特定值,配置才会生效。
    • @ConditionalOnExpression:基于 SpEL 表达式进行条件判断。
  5. Spring Boot 为许多常用的第三方库提供了默认的 Bean 配置,比如嵌入式服务器(Tomcat, Jetty)、数据库连接池(HikariCP)等。如果用户没有提供自己的配置,Spring Boot 就会使用默认的 Bean。
  6. Spring Boot 支持多种外部化配置,包括环境变量、命令行参数、属性文件、YAML 文件等。这些配置可以在运行时动态替换默认值。
  7. Spring Boot 的自动配置发生在 Spring 应用的运行阶段,即在 Spring 应用上下文刷新之前。自动配置类会被加载并解析,然后根据条件注解来决定哪些配置应该被激活。

自定义自动配置

  1. resources 下面创建文件夹 META-INF ,在里面创建一个文件 spring.factories
  2. 创建一个配置类,并使用 @Configuration 注解标注
@Configuration @ConditionalOnClass(MyClass.class) public class MyAutoConfiguration { @Service public MyService myService() { return new MyService(); } }
  1. META-INF/spring.factories 文件中定义自动配置类的加载
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ # 启用SpringBoot的自动配置功能 com.example.MyAutoConfiguration # 指定了一个自定义的自动配置类
Last updated on