2-1.@ConfigurationProperties
约 668 字大约 2 分钟
2025-06-24
@ConfigurationProperties
注解用于为 Bean 绑定属性,允许开发者在 yml
配置文件中以对象的形式添加属性。
1. 基本用法
首先,在 yml
配置文件中定义属性:
servers:
ip-address: 192.168.0.1
port: 2345
timeout: -1
然后,创建一个实体类来封装这些数据,并提供属性对应的 setter
方法:
@Component
@Data
public class ServerConfig {
private String ipAddress;
private int port;
private long timeout;
}
使用 @ConfigurationProperties
注解将配置中的属性值关联到模型类上,prefix
属性指定配置属性的前缀:
@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
private String ipAddress;
private int port;
private long timeout;
}
这样,在加载 Bean 的时候,就可以直接加载配置的属性值了。
2. 用于第三方 Bean
对于第三方 Bean,由于无法直接在源代码中添加 @ConfigurationProperties
注解,可以通过以下方式实现属性绑定:
步骤 1:使用 @Bean
注解定义第三方 Bean
例如,定义一个 DruidDataSource
Bean:
@Bean
public DruidDataSource datasource(){
DruidDataSource ds = new DruidDataSource();
return ds;
}
步骤 2:定义属性
在 yml
文件中定义要绑定的属性,注意属性名称要全小写:
datasource:
driverClassName: com.mysql.jdbc.Driver
步骤 3:属性绑定
使用 @ConfigurationProperties
注解为第三方 Bean 进行属性绑定,注意前缀也是全小写的 datasource
:
@Bean
@ConfigurationProperties(prefix = "datasource")
public DruidDataSource datasource(){
DruidDataSource ds = new DruidDataSource();
return ds;
}
这种方式将 @ConfigurationProperties
注解添加到方法上,为 Spring 容器管理的当前方法的返回值对象绑定属性。本质上和 1 中添加到类上是一样的。
3. @EnableConfigurationProperties 注解
为了更清晰地管理哪些 Bean 通过 @ConfigurationProperties
注解绑定了属性,可以使用 @EnableConfigurationProperties
注解。
步骤 1:开启 @EnableConfigurationProperties
注解
在配置类上开启 @EnableConfigurationProperties
注解,并标注要使用 @ConfigurationProperties
注解绑定属性的类:
@SpringBootApplication
@EnableConfigurationProperties(ServerConfig.class)
public class Springboot13ConfigurationApplication {
}
步骤 2:属性绑定
在对应的类上直接使用 @ConfigurationProperties
进行属性绑定:
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
private String ipAddress;
private int port;
private long timeout;
}
使用 @EnableConfigurationProperties
注解后,Spring 会默认将其标注的类定义为 Bean,因此无需再次声明 @Component
注解。
4. 解决提示信息
在使用 @ConfigurationProperties
注解时,可能会出现一个提示信息,如下图所示:

或者:

为了消除这个提示,可以添加以下依赖,并 Rebuild 项目。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
该依赖在编译时会生成元数据,帮助 IDE 更好地理解和支持 @ConfigurationProperties
注解。