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

2 篇文章 0 订阅

模块中想把一个类写成工具类,提供静态方法调用。但是方法中要用到@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容器中管理。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值