欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > Spring Boot 的自动装配

Spring Boot 的自动装配

2025/6/6 16:20:05 来源:https://blog.csdn.net/weixin_44984196/article/details/148405208  浏览:    关键词:Spring Boot 的自动装配

1. 自动装配的核心机制

1.1 @SpringBootApplication 注解

@SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,包含以下三个注解:

  • @SpringBootConfiguration:标识当前类是一个 Spring Boot 的配置类。

  • @EnableAutoConfiguration:启用 Spring Boot 的自动装配功能。

  • @ComponentScan:启用组件扫描,扫描当前包及其子包中的 Spring Bean。

@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
1.2 @EnableAutoConfiguration

@EnableAutoConfiguration 是自动装配的关键注解,它通过 @Import 注解引入了 AutoConfigurationImportSelector 类。AutoConfigurationImportSelector 是一个特殊的类,负责加载和应用自动装配的配置类。

@EnableAutoConfiguration
public class MyApplication {
}
1.3 AutoConfigurationImportSelector

AutoConfigurationImportSelector 是自动装配的核心实现类。它通过以下步骤加载自动装配的配置类:

  1. 加载 spring.factories 文件: Spring Boot 在启动时会扫描所有 META-INF/spring.factories 文件,这些文件中定义了需要加载的自动装配类。 例如

    # spring-boot-autoconfigure-<version>/META-INF/spring.factories
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,...
  2. 条件判断: 每个自动装配类都使用了 @Conditional 注解(如 @ConditionalOnClass@ConditionalOnMissingBean 等),这些注解定义了自动装配类的加载条件。Spring Boot 会根据这些条件判断是否加载某个自动装配类。

    例如:

    @Configuration
    @ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
    @ConditionalOnMissingBean(DataSource.class)
    public class DataSourceAutoConfiguration {// 配置数据源
    }
  3. 加载配置类: 如果条件满足,Spring Boot 会将对应的自动装配类加载到 Spring 容器中。

2. 自动装配的条件判断

Spring Boot 提供了一系列条件注解,用于控制自动装配类的加载。常见的条件注解包括:

  • @ConditionalOnClass:当类路径中存在指定的类时,加载配置。

  • @ConditionalOnMissingClass:当类路径中不存在指定的类时,加载配置。

  • @ConditionalOnBean:当 Spring 容器中存在指定的 Bean 时,加载配置。

  • @ConditionalOnMissingBean:当 Spring 容器中不存在指定的 Bean 时,加载配置。

  • @ConditionalOnProperty:当指定的配置属性存在时,加载配置。

  • @ConditionalOnExpression:当 SpEL 表达式为 true 时,加载配置。

3. 自动装配的实现步骤

3.1 启动类加载

当 Spring Boot 应用启动时,SpringApplication 会加载启动类(如 MyApplication),并解析 @SpringBootApplication 注解。

3.2 加载 spring.factories 文件

SpringApplication 会扫描所有 META-INF/spring.factories 文件,加载其中定义的自动装配类。

3.3 条件判断

对于每个自动装配类,Spring Boot 会检查其上的条件注解(如 @ConditionalOnClass@ConditionalOnBean 等),判断是否满足加载条件。

3.4 加载配置类

如果条件满足,Spring Boot 会将对应的自动装配类加载到 Spring 容器中,并执行其中的配置逻辑。

4. 自定义自动装配

开发者可以通过以下步骤自定义自动装配:

  1. 创建自动装配类: 创建一个带有 @Configuration 注解的类,并在其中定义需要的 Bean

    @Configuration
    @ConditionalOnClass(MyService.class)
    @ConditionalOnMissingBean(MyService.class)
    public class MyAutoConfiguration {@Beanpublic MyService myService() {return new MyService();}
    }
  2. 注册自动装配类: 在项目的 resources/META-INF/spring.factories 文件中添加自定义自动装配类的全限定名

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.example.MyAutoConfiguration

5. 总结

Spring Boot 的自动装配通过以下机制实现:

  • @SpringBootApplication 注解:启用自动装配功能。

  • @EnableAutoConfiguration 注解:引入 AutoConfigurationImportSelector

  • AutoConfigurationImportSelector:加载 spring.factories 文件中的自动装配类。

  • 条件注解:通过 @Conditional 注解控制自动装配类的加载。

  • 自定义自动装配:开发者可以通过创建自动装配类并注册到 spring.factories 文件中,自定义自动装配逻辑。

通过自动装配,Spring Boot 能够根据项目依赖和配置自动加载合适的配置,大大简化了 Spring 应用的开发过程。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词