我正在编写一个gerrit插件,想要在插件重启/关闭时关闭网络连接。这可以使用LifecycleListener
完成。
据我所知,关于Guice的gerrit插件有两种操作模式。一种是不在Manifest中声明任何内容,并使用@Listen
和@Export
等注释对所有内容使用自动注册。另一种是创建一个Guice模块,并在该模块中手动完成所有接线。
我想使用自动注册,但我无法使用LifecycleListener
。添加@Listen
注释无效,监听器将被忽略。
我的代码看起来像这样(最小化):
@Listen
@Singleton
public class CommitValidationTest implements CommitValidationListener {
@Listen
public static class Lifecycle implements LifecycleListener {
@Override
public void start() {
// write to log
}
@Override
public void stop() {
// write to log
}
}
}
答案 0 :(得分:1)
我认为LifecycleListener
无法与自动注册结合使用。
这就是原因:为了使@Listen
注释起作用,由类实现的@ExtensionPoint
接口(在本例中为LifecycleListener
)必须具有{ Guice模块中的{1}},DynamicItem
或DynamicSet
定义,DynamicMap
并非如此。