在SpringBoot项目中使用WebSocket
的过程中有其他的业务操作需要注入其它接口来做相应的业务操作,但是在WebSocket
的Server
类中使用Autowired注解
无效,这样注入的对象就是空,在使用过程中会报空指针异常。
注释:上面说的WebSocket
的Server类
就是指被@ServerEndpoint
注解修饰的类
原因就是在spring容器
中管理的是单例的,他只会注入一次,而WebSocket
是多对象的,当有新的用户使用的时候,他就会新创建一个WebSocket
对象,这就导致了用户创建的WebSocket
对象都不能注入对象了,所以在运行的时候就会发生注入对象为null
的情况;
主要的原因就是Spring
容器管理的方式不能直接注入WebSocket
中的对象,所以需要调整一下注入方式。
把需要注入的对象
声明为静态对象,代码如下:
private static BaseWebSocketService baseWebSocketService;
@Autowired
public void setService(BaseWebSocketService baseWebSocketService){
WebSocketClient.baseWebSocketService = baseWebSocketService;
}