Spring Boot: Yaml配置文件 以及 @ConfigurationProperties属性获取
Yaml配置文件
概述
Spring Boot在支持application.properties配置文件的同时,也支持application.yaml配置文件.
配置文件中的属性,可以通过:
- 通过
@Value注解将属性值注入Bean中; - 通过
@ConfigurationProperties注解将属性值注入Bean中.
此处不推荐使用@Value方式注入属性,原因有二:
- 对于较为复杂的数据结构难以设置,诸如
Map,Object; - 不支持对属性值进行校验,诸如
@Length,@Size等.
示例
#Simple properties
mail.host=mailer@mail.com
mail.port=9000
mail.from=mailer@mail.com
#List properties
mail.defaultRecipients[0]=admin@mail.com
mail.defaultRecipients[1]=owner@mail.com
#Map Properties
mail.additionalHeaders.redelivery=true
mail.additionalHeaders.secure=true
mail.additionalHeaders.p3=value
#Object properties
mail.credentials.username=john
mail.credentials.password=password
mail.credentials.authMethod=SHA1
以上为application.properties示范配置,下面将使用yaml表示:
#Simple properties
mail:
host: mailer@mail.com
port: 9000
from: mailer@mail.com
#List properties
defaultRecipients:
- admin@mail.com
- owner@mail.com
#Map Properties
additionalHeaders:
redelivery: true
secure: true
p3: true
#Object properties
credentials:
username: john
password: password
authMethod: SHA1
通过两份配置文件的比较,个人认为Yaml配置文件通过树形结构更加清晰明了.
两份文件同时展示了List,Map,Object形式配置文件的设置,可供大家参考.
@ConfigurationProperties属性获取
@Getter
@Setter
@Configuration
//@PropertySource("classpath:configprops.properties")
@ConfigurationProperties(prefix = "mail")
@Validated
public class ConfigProperties {
@Validated
@Getter
@Setter
public static class Credentials {
@Length(max = 4, min = 1)
private String authMethod;
private String username;
private String password;
}
@NotBlank
private String host;
@Min(1025)
@Max(65536)
private int port;
@Pattern(regexp = "^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,6}$")
private String from;
private Credentials credentials;
private List<String> defaultRecipients;
private Map<String, String> additionalHeaders;
}
上述代码为获取Yaml配置文件中的属性值类,并且使用Configuration将类作为Bean提供给程序使用(可以去除此注解,将属性类型通过@Autowired注解注入Bean中).
注意,此处使用@ConfigurationProperties注解,获取前缀为mail的属性值.
Tips:
- 可以添加注解,对属性值进行校验,诸如
@NotBlank,@Pattern等; - 通过
public static class Credentials类,将属性值注入Object对象内; - 通过
@PropertySource注解实现从指定的配置文件读取属性设置.
@Value属性获取
hello.world.name=xiaoming
或者
hello:
world:
name: xiaoming
在属性文件中添加以上配置:
@RestController
public class HelloController {
@Value("${hello.world.name}")
private String name;
}
在Bean中可以通过@Value获取属性值.
关于@value的文章较多,想深入了解的同学可以搜索学习.
pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
PS:
如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!
Spring Boot: Yaml配置文件 以及 @ConfigurationProperties属性获取的更多相关文章
- 【spring boot】配置文件 application.properties 属性解析
1.JPA hibernate命名策略 完整命名策略 ,查看:http://www.cnblogs.com/sxdcgaq8080/p/7910474.html 2.hibernate的DDL执行策 ...
- Spring Boot之配置文件值注入(@ConfigurationProperties)
前言:Spring Boot配置文件值的注入有两种方式,分别是 @ConfigurationProperties @Value 这里我们使用第一种 首先我们创建一个application.yml文件, ...
- 是时候搞清楚 Spring Boot 的配置文件 application.properties 了!
在 Spring Boot 中,配置文件有两种不同的格式,一个是 properties ,另一个是 yaml . 虽然 properties 文件比较常见,但是相对于 properties 而言,ya ...
- 十五、Spring Boot 环境变量读取 和 属性对象的绑定
凡是被spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量. 如: @ ...
- 24. Spring Boot环境变量读取和属性对象的绑定【从零开始学Spring Boot】
转:http://blog.csdn.net/linxingliang/article/details/52069509 凡是被spring管理的类,实现接口EnvironmentAware 重写方法 ...
- (24)Spring Boot环境变量读取和属性对象的绑定【从零开始学Spring Boot】
凡是被Spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量. com. ...
- Spring Boot(二) 配置文件
文章导航-readme 一.配置Spring Boot热部署 技术的发展总是因为人们想偷懒的心理,如果我们不想每次修改了代码,都必须重启一下服务器,并重新运行代码.那么可以配置一下热部署.有了 ...
- 一:Spring Boot 的配置文件 application.properties
Spring Boot 的配置文件 application.properties 1.位置问题 2.普通的属性注入 3.类型安全的属性注入 1.位置问题 当我们创建一个 Spring Boot 工程时 ...
- Spring Boot 核心配置文件 bootstrap & application
Spring Boot 核心配置文件 bootstrap & application 1.SpringBoot bootstrap配置文件不生效问题 2.bootstrap/ applicat ...
随机推荐
- Cocos动作执行时,同时执行完毕再进行下一步的方式
在js中,runAction是统一保存起来等单个文件运行完了再统一进行回调运行的,所以如果想在动作执行完毕之后调用某个函数,那这个函数就应该存在于回调函数中,不会就不能同步了
- js常见的面试题
css 选择符有哪些 通配选择符 *类选择符 classid选择符 id属性选择符 input[name=button]包含选择符 类似 div span子对象选择符 类似 div > span ...
- Excel—文本函数
LEFT(从左开始取文本的函数)就是这个函数可以帮我们取文本,按照从左到右的顺序取 函数语法:=LEFT(要取的文本所在的单元格,从左到右取前几位)这表示的是字符,一个英文字母占一个字符,一个汉子也占 ...
- Android Studio 2.1及其以上版本中的instant run功能 介绍
Android Studio 2.0及其以后版本中的instant run功能 介绍 转 https://blog.csdn.net/zy987654zy/article/details/514961 ...
- Linux 查询服务数据
1. htop 可以时时查看 2. free -m 查看缓存
- c# winform打印excel(使用NPOI+Spire.xls+PrintDocument直接打印excel)
前言 c#做winform程序要求生成并打印Excel报告,为了不安装Office相应组件,我选择了NPOI来生成Excel报告,用winform的PrintDocument控件来触发打印操作,而难点 ...
- Java拦截器的实现原理
对于某个类的A方法进行拦截,在A执行前插入一段代码,A执行后也插入一段代码 原理: 写个拦截器,拦截器中包含要插入前后执行的两段代码 interceptor { C();//C方法 D();//D方法 ...
- 配置Https 和 HSTS
1. 视频 https://www.bilibili.com/video/av33344382/?p=2 using System; using Microsoft.AspNetCore.Builde ...
- jQuery-day01-介绍 和 选择器获取元素
1 ,jQuery介绍 1.1,jquery的介绍,javascript库的关系.体验jquery.把js兼容性代码封装在jquery.js中,本身就是一个javascript库. 1.2,jQuer ...
- Qt5+MSVC2015环境将VS2015编写的控制台程序转化为GUI程序
如题所述,如何将VS2015编写的控制台程序转化为Qt5+MSVC2015环境编译的GUI程序? 最近想到这个操作,类似于Linux下使用的命令行操作转到Windows下使用GUI操作,看了控制台的命 ...
