@ConfigurationProperties读取yml
时间: 2024-12-26 17:24:24 浏览: 4
### 使用 `@ConfigurationProperties` 注解从 YAML 文件中读取配置
为了使 `@ConfigurationProperties` 正确工作并能从 YAML 配置文件中读取属性,需遵循特定的设置流程。
#### 添加必要的依赖项
确保项目 pom.xml 中包含了用于处理配置文件的依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
```
此依赖有助于 IDE 提供更好的代码补全支持以及编译期验证[^3]。
#### 创建配置类
创建一个 Java 类用来映射配置文件中的键值对。该类应标注 `@Component` 或者其他形式将其注册为 Spring Bean,并通过 `@ConfigurationProperties` 来指明前缀路径:
```java
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "example.prefix")
public class ExampleConfig {
private String propertyOne;
private int propertyTwo;
// Getters and Setters are required by ConfigurationProperties
public String getPropertyOne() {
return this.propertyOne;
}
public void setPropertyOne(String propertyOne) {
this.propertyOne = propertyOne;
}
public int getPropertyTwo() {
return this.propertyTwo;
}
public void setPropertyTwo(int propertyTwo) {
this.propertyTwo = propertyTwo;
}
}
```
注意,在上述例子中,`prefix` 参数应当匹配应用配置文件内的相应部分[^5]。
#### 修改启动类或任意配置类
为了让应用程序扫描到带有 `@ConfigurationProperties` 的 bean 并自动装配它们,可以在主程序入口处或其他合适的地方添加 `@EnableConfigurationProperties` 或者更简单的做法是在主类上声明 `@SpringBootApplication` 时默认启用了这一功能[^2]。
另外一种方式是利用 `@ConfigurationPropertiesScan` 基于包名进行全局扫描,这通常适用于大型项目中有多个这样的组件分散在不同地方的情况。
#### 应用配置文件 (application.yml)
最后一步就是在项目的资源目录下编辑 application.yml 文件,按照之前定义好的 prefix 输入对应的 key-value 对作为配置项:
```yaml
example:
prefix:
property-one: value1
property-two: 42
```
以上步骤完成后重启服务即可让这些配置生效。
阅读全文