配置文件优先级

application.properties > application.yml > application.yaml

读取对象数据

@ConfigurationProperties(prefix=”nthink.swagger”)
prefix 指定配置文件中的层级

  1. @ConfigurationProperties(prefix="nthink.swagger")
  2. public class SwaggerProperties {
  3. /**是否开启swagger**/
  4. private Boolean enabled;
  5. /**标题**/
  6. private String title = "";
  7. /**描述**/
  8. private String description = "";
  9. /**版本**/
  10. private String version = "";
  11. /**许可证**/
  12. private String license = "";
  13. /**许可证URL**/
  14. private String licenseUrl = "";
  15. /**服务条款URL**/
  16. private String termsOfServiceUrl = "";
  17. /**联系人**/
  18. private Contact contact = new Contact();
  19. /**swagger会解析的包路径**/
  20. private String basePackage = "com.nthink.his";
  21. }
  1. nthink:
  2. swagger:
  3. enabled: true
  4. title: 资源中心
  5. description: 资源中心接口文档
  6. version: 1.0
  7. base-package: com.nthink.his.resource.controller

读取单一数据

yaml中保存的单个数据,可以使用Spring中的注解@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
image-20211126180433356.png
记得使用@Value注解时,要将该注解写在某一个指定的Spring管控的bean的属性名上方,这样当bean进行初始化时候就可以读取到对应的单一数据了。

读取全部数据

读取单一数据可以解决读取数据的问题,但是如果定义的数据量过大,这么一个一个书写肯定会累死人的,SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中
image-20211126180738569.png
数据封装到了Environment对象中,获取属性时,通过Environment的接口操作进行,具体方法是getProperties(String),参数填写属性名即可
总结

  1. 使用Environment对象封装全部配置信息
  2. 使用@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"