今天在做IM即时通讯时遇到这么个问题,socket连接时,调用了service(通过@Autowired注入),但是出现空指针异常,解决办法如下:
第一步,在websocket上使用static声明service
@Component
@ServerEndpoint("/websocketServer/{username}/{randomId}")
@Lazy
public class WebSocketServer {
public static MsgSessionService sessionService;
public static MsgMessageService messageService;
}
第二步,在websocket配置类上,使用Autowired注入进去
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
@Autowired
public void setMsgSessionService(MsgSessionService sessionService){
WebSocketServer.sessionService = sessionService;
}
@Autowired
public void setMsgMessageService(MsgMessageService messageService){
WebSocketServer.messageService = messageService;
}
}
搞定!!