@ConfigurationProperties注解的作用是可以根据一个前缀将配置文件的属性映射成一个POJO实体类,只要属性名一致就能自动注入进去,使用起来非常方便,这一点容易与@Configuration注解混淆,@Configuration也可以注解一个配置类,不一样的是它需要为每个属性再次声明绑定的字段,稍微复杂,所以推荐使用@ConfigurationProperties注解。
下面看一个简单的例子,我有一个配置文件,下面包含了多种数据结构的属性,如下:
#Simple properties
mail.host=mailer@mail.com
mail.port=9000
mail.from=mailer@mail.com
#List properties
mail.recipients[0]=admin@mail.com
mail.recipients[1]=owner@mail.com
#Map Properties
mail.additionalHeaders.redelivery=true
mail.additionalHeaders.secure=true
#Object properties
mail.credentials.username=john
mail.credentials.password=password
mail.credentials.authMethod=SHA1
#List<Object>
mail.cs[0].username=cs1
mail.cs[0].password=cs1pwd
mail.cs[0].authMethod=SHA1
mail.cs[1].username=cs2
mail.cs[1].password=cs2pwd
mail.cs[1].authMethod=SHA2
#Map<String,Object>
mail.mp.k1.username=k1
mail.mp.k1.password=pwdk1
mail.mp.k1.authMethod=SHA3
mail.mp.k2.username=k2
mail.mp.k2.password=pwdk2
mail.mp.k2.authMethod=SHA3
现在我们就可以通过@ConfigurationProperties注解将其映射成一个配置类,这样使用起来就非常方便了:
@Configuration
@PropertySource("classpath:mail.properties")
@ConfigurationProperties(prefix = "mail")
public class ConfigProperties {
public static class Credentials{
private String authMethod;
private String username;
private String password;
public String getAuthMethod() {
return authMethod;
}
public void setAuthMethod(String authMethod) {
this.authMethod = authMethod;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Credentials{" +
"authMethod='" + authMethod + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
private String host;
private int port;
private String from;
private Credentials credentials;
private List<String> recipients;//接受者
private Map<String,String> additionalHeaders;
private Map<String,Credentials> mp;
private List<Credentials> cs;
//getter setter 省略
}
这个类里面的每个属性和配置里面的属性对应,注意字段名必须是一样的才能赋值:
为了验证是否成功,我们建一个controller类,通过http://localhost:8777/test
来验证一下,看是否成功:
==============简单属性访问================
mailer@mail.com
mailer@mail.com
9000
==============List[String]访问================
[admin@mail.com, owner@mail.com]
==============Map[String,String]访问================
{secure=true, redelivery=true}
==============Object访问================
Credentials{authMethod='SHA1', username='john', password='password'}
==============List[Object]访问================
Credentials{authMethod='SHA1', username='cs1', password='cs1pwd'}
Credentials{authMethod='SHA2', username='cs2', password='cs2pwd'}
==============Map[String,Object]访问================
k2 Credentials{authMethod='SHA3', username='k2', password='pwdk2'}
k1 Credentials{authMethod='SHA3', username='k1', password='pwdk1'}
(注意不支持Set属性)
可以看到,已经成功注入,使用起来非常简洁,不在像spring里面还得通过一大堆xml来注入各种数据结构到Bean里面,使得代码精简了不少。
工程已经分享到github上了,感兴趣的朋友可以star:
https://github.com/qindongliang/spring-boot-properties
分享到:
相关推荐
在Spring Boot中注解@ConfigurationProperties有三种使用场景,而通常情况下我们使用的最多的只是其中的一种场景。本篇文章带大家了解一下三种场景的使用情况。 1.2 场景一 使用@ConfigurationProperties和@...
Spring Boot技术知识点:如何理解@ConfigurationProperties注解
@ConfigurationProperties注解使用方法(源代码) 目录 @ConfigurationProperties注解使用方法 前言 一、Spring配置方式 1.1 第一阶段:xml配置 1.2 第二阶段:注解配置 1.3 第三阶段:Java配置(java config) 二、@...
Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...
spring-boot-properties 注解ConfigurationProperties的使用例子 博客相关 (1) (2) (3) (4) (5) 我的公众号(woshigcs) 有问题可关注我的公众号留言咨询
主要介绍了Spring Boot2.0 @ConfigurationProperties使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
在Spring Boot中测试@ConfigurationProperties 该项目显示了如何在Spring Boot中测试@ConfigurationProperties。 您可以在以下位置找到有关此内容的博客文章:
能够使用Spring Boot提供的@ConfigurationProperties ( spring.datasource.hikari.* , spring.datasource.dbcp2.* ) 通过部署属性decorator.datasource.enabled=true/false禁用装饰 通过spring属性applica
SpringBoot中,将类中的属性和配置文件中的配置在yml文件中进行绑定时出现以下的问题: 例如: person: lastName: hello age: 18 boss: false birth: 2020/02/20 maps: {k1: v1, k2: v2} lists: - lisi - ...
有时候有这样子的情景,我们想把配置文件的信息,读取并自动封装成实体类,这样子,我们在代码里面使用就轻松方便多了,这时候,我们就可以使用@ConfigurationProperties,它可以把同类的配置信息自动封装成实体类 ...
Spring Boot漏洞(待续...) 0x01弹簧启动执行器裸露 执行器端点使您可以监视Spring应用程序并与之交互。 Spring Boot包含许多内置端点,您也可以添加自己的端点。 例如,运行状况端点提供基本的应用程序运行状况...
Spring Boot @ConfigurationProperties示例
Spring Assistant-IntelliJ插件,可帮助您开发Spring应用程序 插件有什么作用 到目前为止,此插件提供以下功能。...假设您在类路径中存在Spring boot的自动配置jar,此插件将自动允许您自动完成属性,作为所有yml
在Spring环境中使用YAML暴露属性 iii. 23.6.3. Multi-profile YAML文档 iv. 23.6.4. YAML缺点 vii. 23.7. 类型安全的配置属性 i. 23.7.1. 第三方配置 ii. 23.7.2. 松散的绑定(Relaxed binding) iii. 23.7.3. @...
在没有父POM的情况下使用Spring Boot 13.2.3.使用Spring Boot Maven插件 13.3.Gradle 13.4.Ant 13.5.Starters 14.构建您的代码 14.1.使用“默认”包 14.2.找到主应用程序类 15.配置类 ...
Spring和依赖注入使用针对REST API的主要Spring生态系统项目,例如Spring Framework,Spring MVC,Spring Boot,Spring Data JPA,Spring Security OAuth和Spring HATEOAS。 还了解依赖注入如何与Spring,IoC容器,...
Springboot2.7.0 + mybatis 搭建多数据源
1.6 使用Spring Initializer向导快速创建Spring Boot 16 2 Spring Boot配置 18 2.1 配置文件 18 2.2 YML语法 19 2.3 YML配置文件值获取 21 2.4 properties配置文件乱码问题 24 2.5 @ConfigurationProperties与@Value...
yaml简介 10、尚硅谷_SpringBoot_配置-yaml语法 11、尚硅谷_SpringBoot_配置-yaml配置文件值获取 12、尚硅谷_SpringBoot_配置-properties配置文件编码问题 13、尚硅谷_SpringBoot_配置-@ConfigurationProperties与@...
这是springboot配置的一部分示例,涉及@ConfigurationProperties和@value的使用,@PropertySource和@ImportResource的使用