@ServiceDependency
注释对方法有何影响?
我正在尝试研究我下载的一些示例代码,其中有一个方法用@ServiceDependency
注释。该方法永远不会在其他地方被调用。所以,我猜测@ServiceDependency
注释使方法自动运行。这个注释真正做了什么,因为某些类中的某些成员变量用@ServiceDependency
注释。
class UI {
private final Map<ServiceReference, AppScreen> screens = new ConcurrentHashMap<>();
@ServiceDependency(removed = "removeScreen")
public void addScreen(ServiceReference<?> sr, AppScreen screen) {
if (tabPane != null) {
Platform.runLater(() -> {
// Do something
});
}
screens.put(sr, screen);
}
public void removeScreen(ServiceReference<?> sr) {
Platform.runLater(() -> {
AppScreen remove = screens.remove(sr);
// DO something else
});
}
}
答案 0 :(得分:3)
这个注释不是来自OSGi,而是来自Felix子项目,&#34; DependencyManager&#34;。它是帮助管理osgi服务的众多项目之一。在OSGi中,使用&#34; Declaratives Services&#34;,此注释称为@Reference
。
在您的示例中,当AppScreen
的实例注册到OSGi Registry中时,将调用方法addScreen
。取消注册此实例时,将调用方法removeScreen
。