@ServiceDependency注解有什么影响
What are the impacts of the @ServiceDependency annotation
@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
});
}
}
这个注释不是来自 OSGi,而是来自 Felix 子项目,"DependencyManager"。它是帮助管理 osgi 服务的众多项目之一。在 OSGi 中,使用 "Declaratives Services",此注释称为 @Reference
.
在您的示例中,当 AppScreen
的实例注册到 OSGi Registry 时,将调用方法 addScreen
。当此实例未注册时,方法 removeScreen
被调用。
的文档
@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
});
}
}
这个注释不是来自 OSGi,而是来自 Felix 子项目,"DependencyManager"。它是帮助管理 osgi 服务的众多项目之一。在 OSGi 中,使用 "Declaratives Services",此注释称为 @Reference
.
在您的示例中,当 AppScreen
的实例注册到 OSGi Registry 时,将调用方法 addScreen
。当此实例未注册时,方法 removeScreen
被调用。