从Spring Boot配置中获取列表

时间:2016-11-18 12:21:43

标签: java spring-boot yaml

My Spring Boot应用程序似乎没有识别我的配置文件(application.yml)中的列表。以下是我正在尝试做的事情。

Java代码

@Autowired
private Environment environment;

public class Config{
  public Config(){
  }

  public List<String> getDateFields(){
    return environment.getProperty("dates.fields", List.class);
  }
}

application.yml

dates:
  fields:
  - date
  - creationDate

getDateFields在上面返回null。但是,如果我使用以下内容......

application.yml

dates:
  fields: creationDate

...它工作正常并将其作为列表返回(虽然是单值的)。为什么我不能从application.yml文件中获取列表?我尝试检查environment是否包含dates.fieldsenvironment.containsProperty("dates.fields")在使用列表版本时返回false

1 个答案:

答案 0 :(得分:2)

如果要使用environment.getProperty(“dates.fields”,List.class)将值加载为List,请使用逗号分隔格式作为列表属性;

dates:
  fields: date, creationDate
这样对我来说很顺利。

但是如果你想使用

dates:
  fields:
     - date
     - creationDate

然后最好使用以下方法从yaml文件加载属性。

@Component
@ConfigurationProperties(prefix = "dates")
public class Config{

   private List<String> fields = new ArrayList<String>();

   public List<String> getDateFields(){
      return this.fields;
   }
}