在春季启动应用程序时加载yaml值

时间:2018-09-19 04:57:04

标签: spring spring-boot yaml

我有一些.yml文件,想要在应用程序启动时加载所有文件。我希望将它们加载到Some bean对象中。之后,我应该能够在应用程序中的任何地方访问yml值。有可能吗?

下面是yml。

Country:
-
    CountryName: Afghanistan
    CountryCode: AFG
    CurrencyName: Afghan afghani
    CurrencyCode: AFN
    Region: Asia
    SubRegion: Southern Asia
    LanguageName: Pashto
    LanguageCode: PUS
    PerCapitaRank: 170
-
    CountryName: Åland Islands
    CountryCode: ALA
    CurrencyName: Euro
    CurrencyCode: EUR
    Region: Europe
    SubRegion: Northern Europe
    LanguageName: Swedish
    LanguageCode: SWE
    PerCapitaRank: 

1 个答案:

答案 0 :(得分:2)

是的,您可以使用@ConfigurationProperties(prefix = "country") link1link2批注将所有属性加载到bean类中,因为spring创建了bean,因此您可以在所需位置自动装配该bean

@Configuration
@ConfigurationProperties(prefix = "country")
public class countryListConfig {

private List<countryList> list;

public List<countryList> getList() {
return list;
 }

 public void setList(List<countryList> list) {
 this.list = list;
 }

 public static class countryList {
 private String CountryName;
 private String CountryCode;
 // getters and setters

 }

如果您想在应用程序中的任何位置使用这些属性,则应将它们声明为静态,因为您不能直接通过yml文件使用setter机制自动装配静态变量

private static List<countryList> staticlist;


 public void setList(List<countryList> list) {
 staticlist = list;
 }

或者您也可以将countryListConfig bean自动连接到任何实用程序类中的静态引用,并在整个应用程序中使用该bean