最近在做项目中的Socket通信的时候,同时要获取数据里的数据,但是在Socket的线程却没法通过注解的方式获取(一些thread类或servlet不能通过spring注解的方式调用spring容器里面的类),我解决的方法是通过实现ApplicationContextAware接口
public class SpringUtil implements ApplicationContextAware{
private static ApplicationContext applicationContext;
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
SpringUtil.applicationContext = applicationContext;
}
}
Spring配置如下:
通过下面的方法就能获取到Spring里的类了
SignalControlerService signalControlerService = (SignalControlerService) SpringUtil.getApplicationContext().getBean("signalControlerService",SignalControlerService.class);或者SignalControlerService signalControlerService = (SignalControlerService) SpringUtil.getApplicationContext().
getBean("signalControlerService");
SignalControlerService类使用注解
@Service("signalControlerService")
public class SignalControlerService implements ISignalControlerService {
@Resource
private ICommonDAO commonDAO;
/*省略后续代码*/
}
本文介绍了一种在非Spring托管线程中获取Spring Bean的方法,通过实现ApplicationContextAware接口并自定义SpringUtil工具类,使得在Socket线程等环境中也能方便地利用Spring容器的功能。
288

被折叠的 条评论
为什么被折叠?



