码迷,mamicode.com
首页 > 移动开发 > 详细

如何在手动获取spring中的bean(Spring ApplicationContextAware获取上下文)

时间:2018-05-14 14:10:03      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:没有   项目   string   业务   nts   上下文   static   获取对象   多个   

一、目的

写了一个项目,多个module,然后想在A模块中实现固定的config注入,当B模块引用A时候,能够直接填写相对应的配置信息就行了。但是遇到一个问题,B引用A时候,A的配置信息总是填充不了,获取不到在B中配置好的信息。猜测原因:因为项目的的bean文件没有被统一管理。

二、ApplicationContextAware 接口

Spring 提供了ApplicationContextAware类,通过它可以获取所有bean上下文。

也就是说,当一个类实现了这个接口之后,这个类就可以方便地获得 ApplicationContext 中的所有bean。

换句话说,就是这个类可以直接获取Spring配置文件中,所有有引用到的bean对象。

三、接口引用

1.工具类SpringContextUtil实现ApplicationContextAware方法,实现 setApplicationContext方法即可

public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext; // Spring应用上下文环境

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtil.applicationContext = applicationContext;
    }

    /**
     * 获取对象
     * 
     * @param name
     * @return Object 一个以所给名字注册的bean的实例
     * @throws BeansException
     */
    public static Object getBean(String name) throws BeansException {
        return applicationContext.getBean(name);
    }

}

2.业务调用

 public String getConfig() throws IOException {
     MyConfig myConfig = (MyConfig)SpringContextUtil.getContext().getBean("myConfig");
     System.out.println("my config is"+myConfig.toString());
     return myConfig.toString();
 }

3.MyConfig

只是一个正常properties的配置映射。

如何在手动获取spring中的bean(Spring ApplicationContextAware获取上下文)

标签:没有   项目   string   业务   nts   上下文   static   获取对象   多个   

原文地址:https://www.cnblogs.com/DjangoBlogs/p/9035735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!