如何让 SmartLifeCycle bean 在 SpringCamelContext 之前启动?

How to make SmartLifeCycle bean start before SpringCamelContext?

我在我的应用程序中使用 camel,我想创建一个在 CamelContext 之前启动的 SmartLifeCycle bean。

为了做到这一点,我实现了一个阶段为:Integer.MAX_VALUE - 101 的自定义 SmartLifeCycle bean。 SpringCamelContext 的阶段为:Ordered.LOWEST_PRECEDENCE

在我的电脑上运行良好,我的 bean 在 SpringCamelContext bean 之前启动。

但是一旦我在我的服务器上部署,SpringCamelContext 就会在之前启动。

知道为什么吗?我怎样才能确保我的 bean 在之前启动?

谢谢

编辑

似乎 SpringCamelContext 是一个 "LifeCycle" bean 而不是 "SmartLifeCycle" bean。根据文档:

 <p>Any {@code Lifecycle} components within the context that do not also
 implement {@code SmartLifecycle} will be treated as if they have a phase
 value of 0. That way a {@code SmartLifecycle} implementation may start
 before those {@code Lifecycle} components if it has a negative phase value,
 or it may start after those components if it has a positive phase value.

但我仍然不知道如何解决这个问题(我怎么知道使用负值是否不会产生某种副作用?)为什么它可以在我的本地计算机上运行?

编辑 2:

区别在于管理配置。 如果我为管理端口使用不同的端口,并且这使用另一个配置:DifferentManagementContextConfiguration。

启动时,方法 "afterSingletonsInstantiated()" 在 Configuration 上调用,它创建一个 managementContext 并立即刷新。

此上下文在主 ApplicationContext 刷新之前和 LifeCycleProcessor 启动之前刷新。

由于其中的 ContextRefreshedEvent 侦听器,此刷新正在初始化 SpringCamelContext。

我仍在寻找解决此问题的方法...

这是一个已知错误,已在 2.24.1 camel 版本中修复