WebSocketServer依赖注入问题

WebSocketServer加入spring的bean管理

问题

@Component
@ServerEndpoint("/webSocket/{topic}")
@Slf4j
public class WebSocketServer {

    @Autowired
    private 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

你可能感兴趣的:(bug解决,websocket)