当你看到这里的时候,相信你也是遇到了同样的问题
最近需要整合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”)一下如何,注解用不了咱原生走一波。