2016-11-18 7 views
0

My Spring起動アプリケーションが設定ファイル(application.yml)のリストを認識していないようです。以下はおおよそ私がやろうとしていることです。Spring起動設定からリストを取得する

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 

を...それが正常に動作し、(単一いえ1を大切に)リストとして返します。なぜ私のapplication.ymlファイルからリストを取得できないのですか? environmentdates.fields、さらにenvironment.containsProperty("dates.fields")が含まれていても、リストバージョンを使用している場合は、falseを返しているかどうかを確認しました。

答えて

2

environment.getProperty( "dates.fields"、List.class);を使用して値をListとしてロードする場合は、リストプロパティにコマンド区切り形式を使用します。

dates: 
    fields: date, creationDate 

このように私にとってはうまくいく。しかし

あなたはYAMLファイルからプロパティをロードするには、次のaproachを使用すると、より良い

dates: 
    fields: 
    - date 
    - creationDate 

を使用する場合。

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

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

    public List<String> getDateFields(){ 
     return this.fields; 
    } 
} 
関連する問題