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.fields
,environment.containsProperty("dates.fields")
在使用列表版本时返回false
。
答案 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;
}
}