在线程中无法通过注入的方式获取 service,亟待解决。

2018-11-21 18:29:21 +08:00
 cxp

解释如下:(有人解决过再发代码)
1、一个主线程实现 ServletContextListener,保证这个线程同 web 生命周期。
2、当有人通过 tcp 连接我的端口时,分出接收信息线程和发送信息线程。
3、此时,我收到数据需要将特定数据插入数据库。
我的做法:
在收信息线程中注入 Service,通过 service 去保存。--出现 java.lang.NullPointerException
其他方法还在寻找中。。。
或者有其他想法能够让 spring 完全管理也行。谢谢

2535 次点击
所在节点    Java
6 条回复
ffkjjj
2018-11-21 19:11:09 +08:00
获取 ApplicationContext, 通过 ApplicationContext 中的 getBean() 方法,
cxp
2018-11-21 20:36:10 +08:00
具体在那获取呢?是主线程获取,然后传参给收信息线程呢,还是直接在收信息线程获取?谢谢
sakudie
2018-11-21 20:41:12 +08:00
在 ServletContextListener 实现类上 加一个 @Compont 注解。
cxp
2018-11-21 20:45:33 +08:00
private ApplicationContext applicationContext;
DaysService daysService = (DaysService) applicationContext.getBean("daysService");
首先,
@Service
@Autowired
private DaysService daysService;
报错:
No qualifying bean of type 'java.net.Socket' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
Aruforce
2018-11-22 08:55:56 +08:00
你这个 context listener 加载完成的时候 Spring 都没开始加载吧?
Antihank
2018-11-22 09:22:54 +08:00
@Service 不是加在这里的呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/510143

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX