我有一个 osgi 服务组件,其属性在 @Component 装饰器(特别是事件主题)上设置。有没有办法访问代码中的事件主题值?更好的是,有没有一种方法可以动态控制我需要将此服务包注册为监听器的事件主题?
@Component( immediate=true, service = {EventHandler.class},
property = {"event.topics=PRICES/STOCKS/NASDAQ/SH"})
public class OrderEntry implements EventHandler{
@Activate
protected void activate(){
// TODO:
// access event.topics property values
}
}
最佳答案
您可以在 activate()
方法中获取 ComponentContext
。 ComponentContext
通过 getProperties()
方法提供对属性的访问。不幸的是,这是一本字典......
@Component( immediate=true, service = {EventHandler.class},
property = {"event.topics=PRICES/STOCKS/NASDAQ/SH"})
public class OrderEntry implements EventHandler{
@Activate protected void activate(ComponentContext context){
System.out.println("Props " + context.getProperties());
}
}
关于java - 有没有办法访问包的类代码中 @Component 声明的服务属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51985209/