第一种方式:将messageService 注入
@ServerEndpoint(value = "/websocket")
@Component
public class WebSocketServer {
//这里使用静态,让 service 属于类
public static MessageServiceImpl messageService;
/**
* 给类的service 注入
* spring管理的都是单例(singleton)和 websocket (多对象)相冲突
*
* @param messageService
*/
@Autowired
public void setMessageService(MessageServiceImpl messageService) {
WebSocketServer.messageService = messageService;
}
}
第二种方式
或者将
@Autowired
public void setMessageService(MessageServiceImpl messageService) {
WebSocketServer.messageService = messageService;
}
写在websocketConfig中
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
/**
*手动注入一个全局变量
* @param messageService
*/
@Autowired
public void setMessageService(MessageServiceImpl messageService) {
WebSocketServer.messageService = messageService;
}
}
本文介绍两种将WebSocket服务与Spring框架中的消息服务集成的方法。第一种是在WebSocket类中直接注入MessageService,通过静态变量实现共享。第二种是在配置类WebSocketConfig中进行注入,避免了在WebSocket类中使用静态变量。
1116

被折叠的 条评论
为什么被折叠?



