Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

i want to map values between a yaml file with a Map<String, List<String>> in springboot

country.yml file:

entries:
  map:
     MY:
      - en
      - zh

SampleConfig file:

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties("entries")
public class SampleConfig {

    private Map<String, List<String>> map = new HashMap<>();

    @Bean
    public void bean1(){
        System.err.println("map has size: "+map.size());
    }
}

But the map.size() is always 0, not sure what i do wrong.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
159 views
Welcome To Ask or Share your Answers For Others

1 Answer

There are two problems

1) By default spring will look for application.yml or application.properties in default locations

To solve the above problem you can use application.yml instead of country.yml

2) You can use @PropertySource to load any external properties file but yml is not supported with this annotation

24.7.4 YAML Shortcomings you cannot use @PropertySource with yml file

YAML files cannot be loaded by using the @PropertySource annotation. So, in the case that you need to load values that way, you need to use a properties file.

How to read yml file using Spring @PropertySource


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...