楼上的回答未免太过复杂,搞清楚为什么不能注入就能很容易解决问题了
/**
* WebSocket 配置
*
* @author Angus Liu
* @data 2018/9/13
*/
@Configuration
public class WebSocketConfig {
/**
* ServerEndpointExporter 用于扫描和注册所有携带 ServerEndPoint 注解的实例,
* 若部署到外部容器 则无需提供此类。
*
* @return
*/
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
/**
* 因 SpringBoot WebSocket 对每个客户端连接都会创建一个 WebSocketServer(@ServerEndpoint 注解对应的) 对象,Bean 注入操作会被直接略过,因而手动注入一个全局变量
*
* @param messageService
*/
@Autowired
public void setMessageService(MessageService messageService) {
WebSocketServer.messageService = messageService;
}
}
/**
* WebSocket 聊天服务端
*
* @author Angus Liu
* @date 2018/09/13
*/
@Component
@ServerEndpoint(value = "/web-socket-server/{account}")
public class WebSocketServer {
// 待注入对象声明为全局变量
public static MessageService messageService;
...
}