从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; 
    } 
}