Osgi 将 bean 注入 Activator

Osgi Inject bean into Activator

我有 3 个 classes ,一个是 Activator 和另外两个,'mysqlConfiguration' 和 'BinaryLogListner' 其中 'mysqlConfiguration' 使用 blueprint[=35= 注入到 'BinaryLogListner' ].

这是我的蓝图(注入部分):

<bean id="binaryLogListnerBean" class="cdc.mysql.BinaryLogListner">
    <property name="mysqlConfiguration" ref="configManagementMysql"></property>
</bean>

我想在包启动时启动 BinaryLogListner,所以我从 Activator class 实例化了它:

BinaryLogListner binaryLogListner = new BinaryLogListner();

当我尝试使用注入到“BinaryLogListner”中的“mysqlConfiguration”时,我将得到一个 null指针异常.

我想知道如何将 bean 注入激活器,这可能吗? 有没有想过如何在这些情况下启动 bean?

在 Activator 中,您使用新的 BinaryLogListner() 实例化 class。因此,您只需获得没有任何蓝图注入的普通 class。这些注入仅在 bean 实例由蓝图创建时才有效。

您应该简单地在任何蓝图 bean 上使用初始化方法来对捆绑包的(蓝图)激活做出反应,而不是激活器。

通常,只要您在捆绑包中使用蓝图,就不应同时使用激活器。