yaml配置简介

配置文件简介

   Spring Boot 中的配置文件有两种格式,properties 或者 yaml,通常状况下,二者能够任意使用,可是他们仍是有一些本质上的区别的,本文主要介绍yaml 配置,最后再来看看 yaml 和 properties 配置文件的区别java

文件位置

首先application.yaml 在 Spring Boot 中能够写在四个不一样的位置,分别是以下位置:

1.项目根目录下的config目录中redis

2.项目根目录下spring

3. Classpath中的config数组

4. classpathbash

   四个位置中的 application.yaml 文件的优先级按照上面列出的顺序依次下降。即若是有同一个属性在四个文件中都出现了,优先级高的为准。同时,开发者能够本身指定yaml文件的名字,可是若是自定义以后,须要指定配置文件的位置app

如图:


     这是在idea中配置的,若项目已经打成jar包以后,那么须要在项目启动时加入以下参数 java -jar myproject.jar --spring.config.name=app

     这样配置以后,在项目启动时,就会按照上面所说的四个位置按顺序去查找一个名为app.yaml 的文件。固然这四个位置也不是一成不变的,也能够本身定义,有两种方式,一个是使用spring.config.location 属性,另外一个则是使用 spring.config.additional-location 这个属性,在第一个属性中,表示本身从新定义配置文件的位置,项目启动时就按照定义的位置去查找配置文件,这种定义方式会覆盖掉默认的四个位置,也可使用第二种方式,第二种方式则表示在四个位置的基础上,再添加几个位置,新添加的位置的优先级大于本来的位置。

配置方式如图


   此处注意,配置文件位置时,值必定要以/结尾

数组注入

Yaml也支持数组注入,例如ide

my:  
  servers:
  - my1.example.com	
  - my2.example.com复制代码

这段数据能够绑定到一个带Bean的数组当中

@ConfigurationProperties(prefix="my")
@Component
public class Config { 	
  private List<String> servers = new ArrayList<String>(); 	
  public List<String> getServers() {		
    return this.servers;	
  }
}复制代码

    项目启动后,配置中的数组会自动存储到server集合中,固然,yaml中不止能够存储数组,也能够在存储对象,

redis:  
  redisConfigs:    
  - host: 192.168.66.1      
    port: 1111
  - host: 192.168.0.10
    port: 1111

复制代码

这个就能够被注入以下类中

@Component
@ConfigurationProperties(prefix = "redis")
public class MyRedis {    
   private List<SingleRedisConfig> redisConfigs;
}复制代码

优缺点

不一样于properties 文件的无序, yaml 配置是有序的,这一点在有些配置中是很是有用的,例如在 Spring Cloud Zuul 的配置中,当咱们配置代理规则是,顺序就显得尤其重要了。固然 yaml 配置也不是万能的,例如 yaml 配置目前不支持 @PropertySource 注解


本人创业团队产品MadPecker,主要作BUG管理、测试管理、应用分发测试

网址:www.madpecker.com,有须要的朋友欢迎试用、体验! ui

本文为MadPecker技术人员编写,转载请标明出处this

相关文章
相关标签/搜索