自动装配的 websockets SimpMessagingTemplate 在所有资源上生成 null
Autowired websockets SimpMessagingTemplate produced null on all resources
神奇之处在于它仅在 linux\server\laptop mac 上崩溃,在 mac 上完美运行(自动装配)。我有
@EnableWebSocketMessageBroker
@Configuration
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Autowired
private A a;
@Autowired
private B b;
@Autowired
private C c;
@Autowired
private D d;
....
}
如果这些 class 中的一个(例如 C)有
@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
然后 C 在 WebSocketConfiguration 上变为空,所有后续 classes 也变为空(在当前示例中也是 D class。所以这里的顺序很重要)
有趣的是,它在 Mac 笔记本电脑上运行完美,但在服务器和我的 linux 笔记本电脑上我遇到了麻烦。
也在 A、B、C、D 中 classes 相互引用(循环依赖自动装配)但据我所知 Spring 必须很容易地解决它。
如果我从 SimpMessagingTemplate 中删除@Autowire,所有 classes 都能完美加载并工作。
这里可能有什么问题?
经过 3 天的研究找到了解决方案。
我已将 SimpMessagingTemplate 移至配置 class 并使用 PostConstruct 将其设置为其他 bean。
看起来 bean 初始化中存在一些顺序。
神奇之处在于它仅在 linux\server\laptop mac 上崩溃,在 mac 上完美运行(自动装配)。我有
@EnableWebSocketMessageBroker
@Configuration
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Autowired
private A a;
@Autowired
private B b;
@Autowired
private C c;
@Autowired
private D d;
....
}
如果这些 class 中的一个(例如 C)有
@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
然后 C 在 WebSocketConfiguration 上变为空,所有后续 classes 也变为空(在当前示例中也是 D class。所以这里的顺序很重要)
有趣的是,它在 Mac 笔记本电脑上运行完美,但在服务器和我的 linux 笔记本电脑上我遇到了麻烦。
也在 A、B、C、D 中 classes 相互引用(循环依赖自动装配)但据我所知 Spring 必须很容易地解决它。
如果我从 SimpMessagingTemplate 中删除@Autowire,所有 classes 都能完美加载并工作。
这里可能有什么问题?
经过 3 天的研究找到了解决方案。
我已将 SimpMessagingTemplate 移至配置 class 并使用 PostConstruct 将其设置为其他 bean。
看起来 bean 初始化中存在一些顺序。