gpt4 book ai didi

osgi - 如何根据配置绑定(bind)动态引用?

转载 作者:行者123 更新时间:2023-12-04 10:58:53 25 4
gpt4 key购买 nike

我有以下消费者组件,它使用名为 sender 的引用服务,

    @Component(configurationPolicy = ConfigurationPolicy.REQUIRE, configurationPid = DATA_SYNC_CONFIG)
public class DataSynchronizer {

@Reference
private TelemetrySender sender;

//calls some methods of sender
}

只要接口(interface) TelementrySender 有一个实现,它就可以正常工作

但是,如果该接口(interface)有两个实现,并且我想根据配置属性选择要绑定(bind)的实现,那么正确的方法是什么?根据我的理解和发现,尝试了以下方法。

在我的组件中包含一个绑定(bind)方法,如下所示。
   @Component(configurationPolicy = ConfigurationPolicy.REQUIRE, configurationPid = DATA_SYNC_CONFIG)
public class DataSynchronizer {

private TelemetrySender sender;

@Reference
void setSender(TelemetrySender telemetrySender ) {
// read configuration and set only correct implementation
this.sender= telemetrySender ;
}

//calls some methods of sender
}

我的一个 TelemetrySender实现如下,
@Component(configurationPolicy = ConfigurationPolicy.REQUIRE, configurationPid = HTTP_TELEMETRY_SENDER_CONFIG,property={ "service=http" })
public class HttpConnector implements TelemetrySender {
}

我的问题是如何选择正确的 TelemntrySender里面 setSender方法?或者,如果我使用了错误的方法,请纠正我。我提到了 this article

最佳答案

最简单的方法是在配置中使用属性 sender.target=<search filter> .
OSGi compendium 112.6.2.1 .

因此,如果您要绑定(bind)的服务具有属性 sendername=my 那么您可以设置:

sender.target=(sendername=my)

关于osgi - 如何根据配置绑定(bind)动态引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58966268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com