使用websocket,使用@Autowired等注解无法注入Spring的Bean,或者注入Bean,运行时为null

使用websocket,使用@Autowired等注解无法注入Spring的Bean,或者注入Bean,运行时为null这是因为Spring 管理的 bean 是通过 Spring 容器来注入的,而 WebSocket 的端点

这是因为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

(0)
CSDN's avatarCSDN
上一篇 2024年7月26日 下午1:41
下一篇 2024年7月26日 下午1:41

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注