我正在编写一个 gerrit 插件,并希望在插件重新启动/关闭时关闭网络连接。这可以使用 LifecycleListener
来完成。
据我所知,Guice 的 gerrit 插件有两种操作模式。一种是不在 list 中声明任何内容,并使用 @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
不能与 AutoRegistration 结合使用。
原因如下:为了使 @Listen
注释正常工作,由类实现的 @ExtensionPoint
接口(interface)(在本例中为 LifecycleListener
code>) 必须在 Guice 模块中具有 DynamicItem
、DynamicSet
或 DynamicMap
定义,而 LifecycleListener< 则不然
.
关于java - 如何在 gerrit 插件中使用 LifecycleListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338919/