2

整个魔法在这里它只在 linux\server\laptop 机器上崩溃并且在 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 上变为 null 并且所有后续类也变为 null (当前示例中的 D 类也。所以这里的顺序很重要)

有趣的是,在 Mac 笔记本电脑上它可以完美运行,但在服务器和我的 linux 笔记本电脑上我遇到了麻烦。

在 A、B、C、D 类中也有相互引用(循环依赖自动装配),但据我了解,Spring 必须非常容易地解决它。

如果我从 SimpMessagingTemplate 中删除 @Autowire 所有类都可以完美加载并且可以正常工作。

这里可能有什么问题?

4

1 回答 1

1

经过3天的研究找到了解决方案。

我已将 SimpMessagingTemplate 移至配置类并使用 PostConstruct 将其设置为其他 bean。

看起来这里在 bean 初始化中存在一些顺序。

于 2015-08-27T10:33:50.510 回答