springboot读取yaml文件 ConfigurationProperties
时间: 2025-05-10 12:40:08 浏览: 25
### Spring Boot 中通过 `@ConfigurationProperties` 注解读取 YAML 配置文件
在 Spring Boot 应用程序中,可以利用 `@ConfigurationProperties` 注解来绑定配置文件中的属性到 Java Bean 中。以下是关于如何使用该注解从 YAML 文件中读取配置的具体实现。
#### 1. 创建 YAML 配置文件
假设有一个名为 `application.yml` 的配置文件,其中包含如下内容:
```yaml
app:
name: MyApplication
version: 1.0.0
config:
timeout: 3000
retries: 5
```
此 YAML 文件定义了一个嵌套结构的配置项,包括应用名称、版本号以及一些额外的配置参数。
---
#### 2. 定义对应的 Java 类
为了将上述 YAML 配置映射到 Java 对象中,需创建一个 POJO 类,并标注上 `@ConfigurationProperties` 和 `@Component` 注解以便让 Spring 自动加载这些配置。
下面是一个示例类:
```java
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "app") // 绑定前缀为 app 的配置项
public class AppConfig {
private String name;
private String version;
private Config config;
public static class Config {
private int timeout;
private int retries;
// Getter and Setter methods
public int getTimeout() { return this.timeout; }
public void setTimeout(int timeout) { this.timeout = timeout; }
public int getRetries() { return this.retries; }
public void setRetries(int retries) { this.retries = retries; }
}
// Getter and Setter methods
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
public String getVersion() { return this.version; }
public void setVersion(String version) { this.version = version; }
public Config getConfig() { return this.config; }
public void setConfig(Config config) { this.config = config; }
}
```
注意:内部类 `Config` 被用来表示嵌套的配置部分。每个字段都需要提供 getter 和 setter 方法以满足 `@ConfigurationProperties` 的需求[^2]。
---
#### 3. 启用 ConfigurationProperties 支持
默认情况下,Spring Boot 已经启用了对 `@ConfigurationProperties` 的支持。但如果项目中有自定义条件或禁用了某些自动配置,则可能需要显式启用它。可以在主应用程序类或其他配置类上添加以下注解:
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@SpringBootApplication
@EnableConfigurationProperties(AppConfig.class) // 显式声明要使用的配置类
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
---
#### 4. 测试配置注入
最后,在某个服务组件中验证配置是否成功注入:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AppService {
@Autowired
private AppConfig appConfig;
public void displayAppInfo() {
System.out.println("Application Name: " + appConfig.getName());
System.out.println("Application Version: " + appConfig.getVersion());
System.out.println("Timeout: " + appConfig.getConfig().getTimeout());
System.out.println("Retries: " + appConfig.getConfig().getRetries());
}
}
```
运行时会打印出 YAML 文件中指定的相关值。
---
### 总结
以上展示了如何借助 `@ConfigurationProperties` 将 YAML 配置文件的内容映射至 Java Bean 中的过程。这种方法不仅提高了代码可维护性和清晰度,还减少了手动解析配置的工作量[^3]。
---
阅读全文
相关推荐


















