Spring Boot的自动加载机制是怎样?

Spring Boot 的自动加载机制是通过 自动配置(AutoConfiguration) 实现的,这个机制依赖于 Spring Framework 的条件化注解 + SPI 扩展机制(spring.factories,使得开发者无需显式配置大量 XML 或 Java 配置即可快速启动应用。


✅ 一、核心理念:约定优于配置

Spring Boot 默认提供了很多“约定好的”配置,只要你引入相关依赖,它就会自动帮你完成相关配置注册。


✅ 二、自动配置的核心组件

1. @SpringBootApplication

这是一个复合注解,相当于:

@Configuration
@EnableAutoConfiguration
@ComponentScan

其中 @EnableAutoConfiguration 是自动加载的关键。


2. @EnableAutoConfiguration 作用

它会触发自动配置机制,核心逻辑是引导加载 META-INF/spring.factories 文件中声明的:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,\
...

这些类就是 Spring Boot 提供的 自动配置类(AutoConfiguration)


3. 自动配置类的特点:

  • 都是以 xxxAutoConfiguration 命名;

  • 本质是普通的 @Configuration 类;

  • 内部大量使用 条件注解 控制加载行为:

常见条件注解:
注解含义说明
@ConditionalOnClass某个类存在于 classpath 时才加载该配置类
@ConditionalOnMissingBeanSpring 容器中没有指定 Bean 时才加载
@ConditionalOnProperty配置文件中存在某个 key 并设置为指定值时才生效
@ConditionalOnBean某个 Bean 存在时才加载
@ConditionalOnWebApplication当前是 Web 应用时才生效

🧠 通过这些条件组合,实现按需加载、按模块启用,极大地减少配置负担。


✅ 三、Spring Boot 自动配置过程概览

  1. 启动类标注 @SpringBootApplication

  2. 启动加载 @EnableAutoConfiguration

  3. 通过 SpringFactoriesLoader 加载 spring.factories 中的自动配置类

  4. 根据条件注解决定哪些自动配置类生效

  5. 自动注册符合条件的 Bean 到 Spring 容器


✅ 四、自定义自动配置(拓展)

你也可以写自己的自动配置类:

@Configuration
@ConditionalOnClass(MyService.class)
@ConditionalOnProperty(name = "my.service.enabled", havingValue = "true")
public class MyServiceAutoConfiguration {

    @Bean
    public MyService myService() {
        return new MyService();
    }
}

并在 resources/META-INF/spring.factories 中注册:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.autoconfig.MyServiceAutoConfiguration

✅ 五、排除自动配置

你可以通过以下方式禁用某些自动配置类:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

✅ 总结一句话:

Spring Boot 自动加载机制基于 @EnableAutoConfiguration 注解,结合 spring.factories 与一系列条件注解,实现了模块化、按需加载、零配置启动,是 Spring Boot 快速开发能力的核心保障。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值