2016-11-18 3 views
0

Meine Spring Boot-Anwendung scheint keine Listen in meiner Konfigurationsdatei (application.yml) zu erkennen. Unten ist grob gesagt, was ich versuche zu tun.Abrufen von Listen aus der Spring Boot-Konfiguration

Java-Code:

@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 Rendite über null. Allerdings, wenn ich verwenden Sie die folgende ...

application.yml:

dates: 
    fields: creationDate 

... es funktioniert gut und gibt sie als Liste (wenn auch eine einzelne bewertet). Warum kann ich die Liste nicht aus meiner application.yml-Datei abrufen? Ich habe versucht zu überprüfen, ob environment sogar dates.fields enthalten, und environment.containsProperty("dates.fields") gibt false zurück, wenn Sie die Listenversion verwenden.

Antwort

2

Verwenden Sie ein Koma-getrenntes Format für Ihre Listeneigenschaften, wenn Sie die Werte als List mit environment.getProperty ("dates.fields", List.class) laden möchten;

dates: 
    fields: date, creationDate 

dieser Weg geht gut für mich.

Allerdings wollen, wenn Sie

dates: 
    fields: 
    - date 
    - creationDate 

Dann besser verwenden Sie die folgende aproach verwenden, um die Eigenschaften von YAML-Datei zu laden.

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

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

    public List<String> getDateFields(){ 
     return this.fields; 
    } 
} 
Verwandte Themen