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属性获取的更多相关文章

  1. 【spring boot】配置文件 application.properties 属性解析

    1.JPA  hibernate命名策略 完整命名策略 ,查看:http://www.cnblogs.com/sxdcgaq8080/p/7910474.html 2.hibernate的DDL执行策 ...

  2. Spring Boot之配置文件值注入(@ConfigurationProperties)

    前言:Spring Boot配置文件值的注入有两种方式,分别是 @ConfigurationProperties @Value 这里我们使用第一种 首先我们创建一个application.yml文件, ...

  3. 是时候搞清楚 Spring Boot 的配置文件 application.properties 了!

    在 Spring Boot 中,配置文件有两种不同的格式,一个是 properties ,另一个是 yaml . 虽然 properties 文件比较常见,但是相对于 properties 而言,ya ...

  4. 十五、Spring Boot 环境变量读取 和 属性对象的绑定

    凡是被spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量. 如: @ ...

  5. 24. Spring Boot环境变量读取和属性对象的绑定【从零开始学Spring Boot】

    转:http://blog.csdn.net/linxingliang/article/details/52069509 凡是被spring管理的类,实现接口EnvironmentAware 重写方法 ...

  6. (24)Spring Boot环境变量读取和属性对象的绑定【从零开始学Spring Boot】

    凡是被Spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量. com. ...

  7. Spring Boot(二) 配置文件

    文章导航-readme 一.配置Spring Boot热部署     技术的发展总是因为人们想偷懒的心理,如果我们不想每次修改了代码,都必须重启一下服务器,并重新运行代码.那么可以配置一下热部署.有了 ...

  8. 一:Spring Boot 的配置文件 application.properties

    Spring Boot 的配置文件 application.properties 1.位置问题 2.普通的属性注入 3.类型安全的属性注入 1.位置问题 当我们创建一个 Spring Boot 工程时 ...

  9. Spring Boot 核心配置文件 bootstrap & application

    Spring Boot 核心配置文件 bootstrap & application 1.SpringBoot bootstrap配置文件不生效问题 2.bootstrap/ applicat ...

随机推荐

  1. Linux时间同步问题

    一.调整时区 sudo tzselect 选择时区 Asia-> China-> Beijing Time->Yes 二.同步时间 ntpdate cn.pool.ntp.org 三 ...

  2. Visual studio 2017 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包

    装完win10更新 发现vs杯具了… 提示 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包 可以尝试在vs命令行 ...

  3. status 返回当前请求的http状态码

    status属性返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取.完整的HTTP状态码如下: 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 ...

  4. chrome 全屏 的两种方式

    新建脚本start.bat 自动全屏模式 "C:\Program Files\Google\Chrome\Application\chrome.exe" --kiosk http: ...

  5. 我对PMO的理解(持续更新)

    PMO的价值 为项目管理提供方法上的指导,对项目的实施过程提供监督.评价. PMO应该从哪方面着手建立管理体系 如何量化工作 如何考评工作 如何激励员工 如何进行人工.成本核算 如何进行进度跟踪与控制 ...

  6. 20190312_浅谈go&java差异(一)

    多线程 java java中对于大量的比较耗时的任务多采用多线程对方式对任务进行处理,同时由于进程和线程 本身是通过宿主机OS进行管理的,当在cpu核数较少或线程分配不当 会导致多线程的效果不佳的事常 ...

  7. Python数据科学手册

    Python数据科学手册(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1KurSdjNWiwMac3o3iLrzBg 提取码:qogy 复制这段内容后打开百度网盘手 ...

  8. sql server 关于日期格式转换查询备注

    select GETDATE()--2016-01-08 16:15:05.787select convert(varchar,getdate(),11)--16/01/08select conver ...

  9. MyBatis返回map数据

    (1)接口中编写方法 //单行 public Map<String, Object> getEmpReturnMap(Integer id); //多行 @MapKey("id& ...

  10. pip离线安装依赖包

    pip安装离线本地包 导出本地已有的依赖包 pip freeze > requirements.txt 将依赖包下载到本地 # 下载到当前目录,指定pip源 pip download -r re ...