配置文件优先级
application.properties > application.yml > application.yaml
读取对象数据
@ConfigurationProperties(prefix=”nthink.swagger”)
prefix 指定配置文件中的层级
@ConfigurationProperties(prefix="nthink.swagger")
public class SwaggerProperties {
/**是否开启swagger**/
private Boolean enabled;
/**标题**/
private String title = "";
/**描述**/
private String description = "";
/**版本**/
private String version = "";
/**许可证**/
private String license = "";
/**许可证URL**/
private String licenseUrl = "";
/**服务条款URL**/
private String termsOfServiceUrl = "";
/**联系人**/
private Contact contact = new Contact();
/**swagger会解析的包路径**/
private String basePackage = "com.nthink.his";
}
nthink:
swagger:
enabled: true
title: 资源中心
description: 资源中心接口文档
version: 1.0
base-package: com.nthink.his.resource.controller
读取单一数据
yaml中保存的单个数据,可以使用Spring中的注解@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
记得使用@Value注解时,要将该注解写在某一个指定的Spring管控的bean的属性名上方,这样当bean进行初始化时候就可以读取到对应的单一数据了。
读取全部数据
读取单一数据可以解决读取数据的问题,但是如果定义的数据量过大,这么一个一个书写肯定会累死人的,SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中
数据封装到了Environment对象中,获取属性时,通过Environment的接口操作进行,具体方法是getProperties(String),参数填写属性名即可
总结
- 使用Environment对象封装全部配置信息
- 使用@Autowired自动装配数据到Environment对象中
yaml文件中的数据引用
如果你在书写yaml数据时,经常出现如下现象,比如很多个文件都具有相同的目录前缀
在书写字符串时,如果需要使用转义字符,需要将数据字符串使用双引号包裹起来baseDir: /usr/local/fire center: dataDir: ${baseDir}/data tmpDir: ${baseDir}/tmp logDir: ${baseDir}/log msgDir: ${baseDir}/msgDir
lesson: "Spring\tboot\nlesson"