SpringBoot AutoConfiguration

本文介绍了SpringBoot自动配置原理,包括AutoConfig特性和@Conditional条件注解的作用。同时讲解了如何通过不同方式将配置文件中的属性注入到Bean中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习SpringBoot之前弄清一个概念:SpringBoot只是一个配置框架,而不是Spring Framework的重写。那么,它最重要的一个特性就是AutoConfig,这一点与Spring Framework的stereotype一样。之所以能做到自动注入,主要的就是SpringFactoriesLoader类负责载入:classpath:META-INF/spring.factories的接口实例。

当然,很多时候SpringBoot在load时,会注意相关的类是否存在,这点是由 @Conditional系列来完成的,如MongoAutoConfiguration的 @ConditionOnClass(MongoClient.class)


因此,以下两种方法都能在SpringBoot下被加载到容器中:

1、@Configuration(@Component)

2、@EnableAutoConfiguration + 新建META-INF/spring.factories文件,然后跟properties文件一样定义一个接口


如果需要载入application.properties文件中的属性到一个Bean,对应也有两种方式:

1、类中每个属性加注 @Value("全名")

2、类加注@ConfigurationProperties(prefix="前缀"),并且在引用它的类上加注 @EnableConfigurationProperties

### 创建自定义 `@AutoConfiguration` 类 在 Spring Boot 应用程序中,通过创建带有 `@AutoConfiguration` 注解的类来实现自动配置功能。此类通常会根据特定条件自动装配 Bean 并应用相应的设置。 #### 实现步骤概述 要使自定义配置生效,需遵循以下原则: - 使用 `@AutoConfiguration` 注解标记目标类; - 将该类放置于合适的位置以便能被扫描到; - 如果希望此配置仅当某些条件满足时才激活,则可以利用 `@ConditionalOnClass`, `@ConditionalOnMissingBean` 等条件注解[^2]; 对于想要让某个组件成为可选依赖项的情况,可以通过引入这些条件判断逻辑确保即使缺少相应库也不会影响整个项目的启动与运行状态。 #### 编写示例代码 下面是一个简单的例子展示如何构建一个名为 `MyCustomConfig` 的自动配置类: ```java package com.example.demo.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) @AutoConfiguration public class MyCustomConfig { @Bean @ConditionalOnProperty(name="my.custom.enabled", havingValue = "true", matchIfMissing = true) public CustomService customService() { return new CustomServiceImpl(); } } ``` 这段代码展示了怎样基于属性的存在与否决定是否注册服务实例的方法。这里假设存在一个叫作 `customService()` 方法用于返回实现了接口 `CustomService` 的具体对象 `CustomServiceImpl`. 为了让上述配置能够被识别并应用于项目之中,还需要将其路径加入至资源目录下的特殊文件里——即位于 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 文件内指定全限定名形式声明每一个待导入的自动化配置类名称列表[^4]. 注意:从 Spring Boot 2.7 开始推荐使用新的机制替代传统的 `spring.factories` 方式来进行自动配置类的注册. #### 配置位置说明 传统上,开发者会在 `src/main/resources/META-INF/spring.factories` 文件中添加如下内容以完成注册操作: ```properties org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.example.demo.config.MyCustomConfig ``` 然而现在建议采用更新的方式,在 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 文件中直接列出所需加载的自动配置类: ``` com.example.demo.config.MyCustomConfig ``` 这样做不仅更加直观易懂而且也符合当前版本的最佳实践指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值