java - 有没有办法访问包的类代码中 @Component 声明的服务属性?

标签 java osgi

我有一个 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() 方法中获取 ComponentContextComponentContext 通过 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/

相关文章:

intellij-idea - 如何在 IntelliJ Idea 中创建 OSGI 项目?

java - 使用 javax.crypto 时出现 ClassCastException

java - Java 中不存在单一类路径问题的语言

java - 当我的 Spring 应用程序运行时,它没有使用我的 TogglzConfig 文件

java - Android 中的 CSV 文件无法写入?

java - 存储分析信标的最有效方法是什么?

java - 在我的 gwt/osgi Web 应用程序中实现授权和身份验证的首选方法是什么?

tomcat - 难以理解整个 OSGi 网络生态系统

Java可变函数参数

java - javax.security.cert.X509Certificate 和 java.security.cert.X509Certificate 之间不兼容