spring-bootconfigurationyaml

Spring Boot YAML configuration for a list of strings


I am trying to load an array of strings from the application.yml file. This is the config:

ignore:
    filenames:
        - .DS_Store
        - .hg

This is the class fragment:

@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();

There are other configurations in the same class that loads just fine. There are no tabs in my YAML file. Still, I get the following exception:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"

Solution

  • My guess is, that the @Value can not cope with "complex" types. You can go with a prop class like this:

    @Component
    @ConfigurationProperties('ignore')
    class IgnoreSettings {
        List<String> filenames
    }
    

    Please note: This code is Groovy - not Java - to keep the example short! See the comments for tips how to adopt.

    See the complete example https://github.com/christoph-frick/so-springboot-yaml-string-list