websocket 不能自动注入( @Autowired ) service bean 报 null 错误
本质原因:
spring管理的都是单例(singleton),和 websocket (多对象)相冲突。
因为websocket是多实例单线程的,而websocket中的对象在@Autowried时,只有整个项目启动时会注入,而之后新的websocket实例都不会再次注入,故websocket上@Autowried的bean是会为null的
解决方案:
使用静态注入:
static RabbitAdmin rabbit;
@Autowired
public void setRabbitAdmin(RabbitAdmin rabbitAdmin){
MessageWebsocket.rabbit = rabbitAdmin;
}