启动后如何在应用程序中的任何位置访问对象

时间:2018-09-26 05:01:45

标签: spring spring-boot spring-web

我在地图上的某个国家/地区列表中有一个类。现在,我想在其他一些类的应用程序中访问此地图。

基本上,我希望该地图在整个应用程序中都可用。

启动后,我正在启动应用程序中获得国家列表。但是能够将其设置为应用程序范围。我正在使用Spring Boot和Web。

下面是我的代码。

@SpringBootApplication
public class FinalApplication {

    public static void main(String[] args) {
        ApplicationContext context = new SpringApplicationBuilder(FinalApplication.class).run(args);
        Country cfg = context.getBean(Country.class);
        CountryDataLoader loader = new CountryDataLoader(cfg);
}

@ApplicationScope
@Component
@NoArgsConstructor
public class CountryDataLoader {

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

    Map<String,List<String>> languageMap = new HashMap<>();
public List<String> countryListByAmericaRegion () {
        //System.out.println(myConfig.getList());
        List<CountryBean> list = myConfig.getList();
        Iterator<CountryBean> it = list.iterator();
        while(it.hasNext()) {
            CountryBean bean = it.next();
            if(bean.getRegion().equals(AMERICAS)) {
                byAmericaRegion.add(bean.getCountryName());
            }
        }
        regionMap.put(AMERICAS, byAmericaRegion);
        //System.out.println(byAmericaRegion);
        return byAmericaRegion;
    }

}

在countrydataLoader类中,我正在加载所有国家/地区数据。如何在其他RestController中访问这两个地图? 谢谢

1 个答案:

答案 0 :(得分:1)

CountryDaoLoader是一个Spring bean,您可以从应用程序上下文中获取Spring bean的实例,如下所示。

  

ApplicationContextProvider.getApplicationContext()。getBean(CountryDataLoader.class);