配置文件优先级
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: truetitle: 资源中心description: 资源中心接口文档version: 1.0base-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}/msgDirlesson: "Spring\tboot\nlesson"
