spring整合Websocket,@ServerEndpoint注解的类无法依赖注入@Autowired无法注入bean

在尝试使用Spring整合WebSocket时,发现在@ServerEndpoint注解的类中,通过@Autowired注解注入的bean为null。经过研究,发现@ServerEndpoint与@Autowired不兼容。为解决此问题,可以利用Spring上下文在运行时获取bean,通过ApplicationContext获取所需的bean并避免直接new实例。问题暂时得到解决,后续遇到的新问题有待进一步探索。
摘要由CSDN通过智能技术生成

当你看到这里的时候,相信你也是遇到了同样的问题
最近需要整合Websocket,@ServerEndpoint注解所标注的类,类似于我们写的@Controller标注的Controller层,
直接和页面交互(还没深究,先这样理解)。结果@Autowire注入的Service层的bean为null,然后检查配置,各种姿势测试这个bean,发现和
@ServerEndpoint有关。先看代码款式

@Controller
@ServerEndpoint("/websocket/{clientId}")
public class WebSocket {
	
	@Autowired
	private IClientService clientService;//这玩意为null
	@Autowired
	private  IMessageService messageService;//这玩意也为null

其实这里的@Controller是一个装饰品,完全可以去掉。为什么没注入进去?传送门在这,点击查看老外的解释
所以注定,你要用 @ServerEndpoint实现ws,就注定不能用@Autowired注入bean,那咋整?new一个?肯定不行。思来想去,你不就是要个bean么,我@Autowired把你召唤不出来,那我拿spring上下文把你getBean(“name”)一下如何,注解用不了咱原生走一波。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值