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 ...
随机推荐
- 【GIT】git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚
[git 删除本地分支] git branch -D br [git 删除远程分支] git push origin :br (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退 ...
- js事件流机制冒泡和捕获
JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间. 事件流 从页面中接收事件的顺序称为事件流. IE --> 事件冒泡流 Netsc ...
- Postman测试上传文件
postman测试上传文件 输入url:http://127.0.0.1:8081/uploadfile 选择post方式 选择body 选择form-data,text改为file 输入key: ...
- 如何在本地数据中心安装Service Fabric for Windows集群
概述 首先本文只是对官方文档(中文,英文)的一个提炼,详细的安装说明还请仔细阅读官方文档. 虽然Service Fabric的官方名称往往被加上Azure,但是实际上(估计很多人不知道)Service ...
- haproxy4-acl配置
访问控制设定: 匹配后可进行那些操作: Use _backend : 当符合条件时使用特定的backend后端, Use_backend <backend> [{if | unles ...
- pdfjs预览pdf文件的两种方式(可复制)
1.以图片形式进行展示: version:采用1.x版本,2.0版本会有字体显示不完整的问题:参考 这里使用1.8.170 <script th:src="@{/pdfjs/build ...
- python控制语句---循环结构语句
这次主要把循环结构的控制语句补上,主要包含while.for.continue.break.循环嵌套.主要写一些基本的认识以及包含的一些实例.当只有唯一路径且只跑一次的时候选择上一节中的选择结构语句就 ...
- 练习html,css,js仿制百度首页
1.练习目的 练习使用html,scc,js 完成界面样式,用ul标签实现文本框下拉,通过js完成添加列表内容等功能 2.效果 3.程序代码 <!DOCTYPE html> <htm ...
- 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT&多项式】permutation
目录 题意 输入格式 输出格式 思路 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a, ...
- CSS特例定位方式
同级向下一个元素定位,一个+表示下一个元素,++表格下下个元素 input[name='name1'] +input td:eq(0)表示第一个td元素,此定位方式限于执行js,在selenium时用 ...