我正在编写gerrit插件,并希望在插件重新启动/关闭时关闭网络连接。可以使用LifecycleListener
完成。
据我所知,涉及Guice的Gerrit插件有两种操作模式。一种是不要在清单中声明任何内容,并使用@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
}
}
}
最佳答案
我认为LifecycleListener
不能与自动注册结合使用。
原因如下:为了使@Listen
注释起作用,由类(在本例中为@ExtensionPoint
)实现的LifecycleListener
接口必须在其中包含DynamicItem
,DynamicSet
或DynamicMap
定义。 Guice模块,LifecycleListener
并非如此。