本文主要是介绍WebSocketServer依赖注入问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
WebSocketServer加入spring的bean管理
问题
@Component
@ServerEndpoint("/webSocket/{topic}")
@Slf4j
public class WebSocketServer {@Autowiredprivate WsHandle wsHandle;}
前面使用@ServerEndpoint注册一个websocket服务端,然后发现wsHandle依赖注入失败,为null
解决过程
查阅资料得知:
WebSocketServer类使用@ServerEndpoint
注解表明它是一个WebSocket端点,因此Spring并不会直接将其纳入Spring容器的管理范围。WebSocket的生命周期和Spring Bean的生命周期并不一致,所以直接通过@Autowired
注解注入可能会导致失败。
为了解决这个问题,可以考虑使用ServerEndpointConfig.Configurator
配置类,这样你可以在WebSocketServer类初始化时手动将它纳入Spring容器管理,这样WebSocketServer就能享受spring的依赖注入和bean管理。
@Component
@ServerEndpoint(value = "/webSocket", configurator = WebSocketServer.SpringConfigurator.class)
@Slf4j
@Data
public class WebSocket
这篇关于WebSocketServer依赖注入问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!