日期:2014-05-17  浏览次数:20724 次

Spring不能向Socket注入对象?

如图所示,对象datasyncSiteDaoImpl是null,说明Spring注入失败。
spring配置文件没有问题,这个类在ServletContextListener中实例化的

------解决方案--------------------
ServerSession必须作为一个bean给spring管理才行,否则,要用那个xxxUtils获得context再getBean才行
------解决方案--------------------
引用:
Socket类无法交给spring管理,那就无法给serverSession注入socket,除了用new来新建ServerSession,貌似没有办法了

你用new来创建ServerSession了那么里面的DatasyncSiteDao就不能用这种注入了,要用spring的ApplicationContext.getBean("datasyncSiteDao")这样的方式获取
DatasyncSiteDao datasyncSiteDaoImpl=(DatasyncSiteDao)org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext().getBean("datasyncSiteDao");
不过我觉得很奇怪你这个完全是javase就可以搞定的干嘛要放在web上
------解决方案--------------------
前几天碰到过类似的问题,可以这样做

HttpServletRequest request = ServletActionContext.getRequest();
ServletContext sc = request.getSession().getServletContext();
WebApplicationContext webAppCtx = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
你要的bean  bean = (你要的bean) webAppCtx
.getBean("你要的bean");