我有一个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
}

}

最佳答案

您可以在ComponentContext方法中获取activate()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/

10-10 03:13