您的位置:首页 > 编程语言 > Java开发

Spring 无法注入静态变量,直接在静态方法中获取bean

2016-01-12 12:19 645 查看
模块中想把一个类写成工具类,提供静态方法调用。但是方法中要用到@autowire注入的dao类变量,它要能在静态方法中使用的话本身就加上static,但是static变量是无法用@autowire注入的。

@Autowired
private AppConfMapper m;

public static Map getSysConf() {
    m.....;
}


换一种思路,为什么在要外层注入,在方法里面获取m也可以啊。你可以用@autowire这种注解自动把对象实例注入进来,这些实例是维护在getApplicationContext中的。手动去这里getBean出来就是了。

public static Map getSysConf() {

    AppConfMapper appConfMapper = (AppConfMapper) BeanHoldFactory.getApplicationContext().getBean("appConfMapper");
    List<Map> list = appConfMapper.getSysConf();
}
这里BeanHoldFactory 实现了ApplicationContextAware,重写了setApplicationContext方法,里面存放了代码中所有使用注解(@Component,@Repository,@Service等)标注的类的实例,相当于放在spring容器中管理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: