24.6.1. 加载YAML

Spring框架提供两个便利的类用于加载YAML文档,YamlPropertiesFactoryBean会将YAML加载为PropertiesYamlMapFactoryBean会将YAML加载为Map

例如,下面的YAML文档:

  1. environments:
  2. dev:
  3. url: http://dev.bar.com
  4. name: Developer Setup
  5. prod:
  6. url: http://foo.bar.com
  7. name: My Cool App

会被转化到这些属性:

  1. environments.dev.url=http://dev.bar.com
  2. environments.dev.name=Developer Setup
  3. environments.prod.url=http://foo.bar.com
  4. environments.prod.name=My Cool App

YAML列表被表示成使用[index]间接引用作为属性keys的形式,例如下面的YAML:

  1. my:
  2. servers:
  3. - dev.bar.com
  4. - foo.bar.com

将会转化到这些属性:

  1. my.servers[0]=dev.bar.com
  2. my.servers[1]=foo.bar.com

使用Spring DataBinder工具集绑定这些属性(这是@ConfigurationProperties做的事)时,你需要确保目标bean有个java.util.ListSet类型的属性,并且需要提供一个setter或使用可变的值初始化它,比如,下面的代码将绑定上面的属性:

  1. @ConfigurationProperties(prefix="my")
  2. public class Config {
  3. private List<String> servers = new ArrayList<String>();
  4. public List<String> getServers() {
  5. return this.servers;
  6. }
  7. }