2016-11-18 59 views
0

我的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

回答

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; 
    } 
} 
相關問題