@ConfigurationProperties 是 Spring Boot 中实现配置文件到 Java 对象强类型绑定的核心注解,支持嵌套、校验、松散绑定和元数据提示;需定义带前缀的 POJO 类,提供 getter/setter 或使用 record/@ConstructorBinding,配合 @Component 或 @EnableConfigurationProperties 注册,并可通过 @Validated、spring-boot-configuration-processor 等增强校验与 IDE 支持。

在 Spring Boot 中,@ConfigurationProperties 是实现配置文件(如 application.yml 或 application.properties)到 Java 对象强类型绑定的核心注解。它比 @Value 更安全、更结构化,支持嵌套、校验、松散绑定和元数据提示。
定义配置属性类
创建一个普通 Java 类(POJO),用 @ConfigurationProperties 标注,并指定配置前缀(如 app),同时建议搭配 @Component 或在主配置类上用 @EnableConfigurationProperties 注册:
- 类必须有无参构造器(Lombok 的
@Data或@NoArgsConstructor可辅助) - 字段需提供标准 getter/setter(Lombok
@Data可自动补全) - 推荐使用
record(Java 14+)或@ConstructorBinding实现不可变绑定(需配合spring-boot-configuration-processor生成元数据)
启用松散绑定与配置元数据
Spring Boot 默认支持松散绑定(如 my-server-port → myServerPort 或 my_server_port)。若需严格匹配或自定义转换逻辑,可:
- 在字段上用
@DateTimeFormat、@NumberFormat指定格式 - 添加
spring-boot-configuration-processor依赖,让 IDE 提示配置项并生成spring-configuration-metadata.json - 使用
@Validated+@NotBlank、@Min等注解进行校验(需开启validation)
在配置文件中写入对应属性
按类中字段结构书写 YAML 或 Properties。例如:
立即学习“Java免费学习笔记(深入)”;
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
application.yml:
app:
name: demo-app
version: 1.2.0
server:
port: 8080
timeout: 5000ms
features:
- login
- search
- notify对应类字段应为 String name、String version、Server server(内部含 int port 和 Duration timeout)、List<string> features</string>。
注入并使用配置对象
直接按类型注入即可,Spring 容器会自动完成绑定:
@Service
public class AppService {
private final AppProperties appProperties;
<pre class="brush:php;toolbar:false;">public AppService(AppProperties appProperties) {
this.appProperties = appProperties;
}
public void printConfig() {
System.out.println(appProperties.getName());
System.out.println(appProperties.getServer().getPort());
}}
注意:若未加 @Component,需在启动类或配置类中显式声明 @Bean 并标注 @ConfigurationProperties("app")。

















