这是因为Spring 托管bean 是通过Spring 容器注入的,而WebSocket 端点(@ServerEndpoint) 是由WebSocket 容器(Tomcat、Jetty 等)直接管理的。这意味着WebSocket端点可能在Spring容器创建之前就已创建,导致Spring容器无法注入bean。
@Autowired
私有UserService 用户服务;
/**
* 连接成功时调用的方法
*/
@OnOpen
public void onOpen(Session session, @PathParam(\’userId\’) Integer userId) {
this.CurrentUserName=userService.getUserName(userId);
因此,直接使用注解注入bean很有可能会抛出NULL指针异常。
所以解决方案是使用配置类中的write 方法并手动获取WebSocket 端点上的Spring 上下文来获取UserService 实例。
私有静态UserService userService;
@Autowired
公共无效setUserService(UserService userService){
WebSocketServer.userService=userService;
}
上面关于使用#WebSockets、无法使用@Autowired等注解注入Spring bean、或者注入运行时为null的bean的相关内容源网络的信息仅供参考。官宣!
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93786.html