@ConfigurationProperties 读取配置文件值
时间: 2023-10-12 21:19:02 浏览: 117
@ConfigurationProperties 是 Spring Boot 提供的一个注解,用于将配置文件中的属性值自动绑定到对应的 Bean 上。其作用类似于 @Value 注解,但更加灵活,可以将多个属性值绑定到一个 Bean 上,也支持将属性值绑定到一个 List 或 Map 中。
举个例子,假设我们有一个配置文件 application.properties,其中定义了如下属性:
```
myapp.name=My App
myapp.version=1.0.0
myapp.authors[0]=John Doe
myapp.authors[1]=Jane Doe
```
我们可以定义一个对应的配置类 MyConfig,使用 @ConfigurationProperties 将配置文件中的属性值绑定到该类上:
```
@ConfigurationProperties(prefix = "myapp")
public class MyConfig {
private String name;
private String version;
private List<String> authors;
// getters and setters
}
```
在该类中,prefix 属性指定了要绑定的属性的前缀,即 myapp,Spring Boot 会自动将该前缀下的属性值绑定到对应的属性上。我们也可以通过 @Value 注解逐个绑定属性值,但这样会比较麻烦,而且不支持绑定 List 或 Map 类型的属性。
相关问题
@ConfigurationProperties读取yml
### 使用 `@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
```
以上步骤完成后重启服务即可让这些配置生效。
@ConfigurationProperties读取一个List
和一个Map的示例类Config1Properties的区别是什么?<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [【Spring Boot】配置文件@ConfigurationProperties,读取List、Map参数](https://blog.csdn.net/sayyy/article/details/83657119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [配置文件@ConfigurationProperties读取List、Map参数](https://blog.csdn.net/weixin_34702885/article/details/115508591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文