这真是个神奇的东西,它只在linuxserver笔记本电脑上崩溃,在mac上完美运行(自动装配)。
@EnableWebSocketMessageBroker
@Configuration
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Autowired
private A a;
@Autowired
private B b;
@Autowired
private C c;
@Autowired
private D d;
....
}
如果这些类中的一个(例如C)有
,则@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
则C在WebSocketConfiguration上变为空,所有以下类也变为空(当前示例中的D类也为空)。所以顺序很重要)
有趣的是,在Mac笔记本电脑上它工作得很好,但在服务器和我的linux笔记本电脑上我有问题。
也在A,B,C,D类有相互引用(循环依赖自动装配),但据我所知,Spring必须很容易解决它。
如果我从SimpMessagingTemplate中删除@Autowire,所有类都可以完美加载并工作。
这里可能有什么问题?
经过3天的研究找到了解决方案。
我将SimpMessagingTemplate移到配置类中,并使用PostConstruct将其设置为其他bean。
看起来在bean初始化中存在一些顺序