我有以下使用参考服务的消费者组件sender
,
@Component(configurationPolicy = ConfigurationPolicy.REQUIRE, configurationPid = DATA_SYNC_CONFIG)
public class DataSynchronizer {
@Reference
private TelemetrySender sender;
//calls some methods of sender
}
只要接口有一个实现,这就可以正常工作TelementrySender
但是,如果该接口有两个实现,并且我想根据配置属性选择要绑定的实现,那么正确的方法是什么?根据我的理解和发现,尝试了以下方法。
在我的组件中包含一个绑定方法,如下所示。
@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
方法?或者,如果我使用了错误的方法,请纠正我。我参考了这篇文章