线程中无法实现spring注解

1 篇文章 0 订阅
1 篇文章 0 订阅

前言: 线程为安全是会防止注入的 。当我在开辟线程写定时器准备定时执行修改操作时,发现使用spring住的类都是null,就是说无法获取到spring中的bean。
所以问题就来了 这个要怎么解决呢 解决方法如下:
这时我们就要用到ApplicationContextAware接口 。
因为在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能。为了让Bean获取它所在的Spring容器,可以让该Bean实现ApplicationContextAware接口
自定义代码

public class AllBean implements ApplicationContextAware
{
	private static ApplicationContext context = null;

	@SuppressWarnings("static-access")
	@Override
	public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
	this.context=applicationContext;
	}

	@SuppressWarnings("unchecked")
	public static <T> T getBean(String beanName){
	return (T) context.getBean(beanName);
	}

	public static String getMessage(String key){
	return context.getMessage(key, null, Locale.getDefault());
	}
}

我们还需要在applicationContext.xml中声明AllBean的bean

<bean id="allBean" class="com.cn.XX.AllBean"></bean>

最后我们只需要通过实体类的getBean方法 获取想要获取的类就OK了

OrderDao orderDao = (OrderDao)AllBean.getBean("orderDao");

如有不懂加微信询问哦 AiMyHear

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值