从Spring Boot配置中获取列表
问题描述:
我的Spring Boot应用程序似乎无法识别我的配置文件(application.yml)中的列表。下面大概是我想要做的。从Spring Boot配置中获取列表
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
回报上述空。但是,如果我用下面...
application.yml:
dates:
fields: creationDate
...它工作正常,并将它作为一个列表(尽管是单值的)。为什么我无法从我的application.yml文件中获取列表?我试着检查使用列表版本时是否包含environment
甚至包含dates.fields
,并且environment.containsProperty("dates.fields")
返回false
。
答
如果要使用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;
}
}