我正在使用(现有的)Jenkins插件,并希望使用依赖注入。不幸的是,Jenkins开发的DI记录很少。据我所知,詹金斯使用谷歌的Guice框架进行DI。有this Wiki page,但我对此一点感到困惑:在我检查的现有Jenkins插件中,我没有看到Guice的这些电话,但我确实看到了很多用途@Inject
注释。此外,令我困扰的是,我需要在每个类的里面调用Guice.createInjector(new MyModule()).injectMembers(this);
,我想要依赖注入,似乎我在乱丢我的代码。
如何在Jenkins中进行依赖注入?例如,我有一个简单的界面" MyInterface"和实施班MyInterfaceImpl
。在第三节课中,我有以下内容:
class MyClass {
private MyInterface obj;
@Inject
public MyClass(MyInterface obj) {
this.obj = obj;
}
...
}
Jenkins中是否有自动构造此类对象的机制,或者我是否必须添加Guice注入器代码?
答案 0 :(得分:0)
具有不完整信息的wiki由Dan Alvizux编写,作为SO问题的一部分。它没有反映Jenkins如何实际进行DI。
为DI注册课程的正确方法似乎是使用@Extension
注释并正常使用@Inject
。 JavaDoc中讨论了一些其他选项。
答案 1 :(得分:0)
您无需触摸Guice。定义一个接口(根据文档扩展ExtensionPoint
);将其实现为@Extension
;并使用ExtensionList
查找实现。基于JenkinsRule
的测试可以使用@TestExtension
添加模拟实现。请注意,正确地说这是服务注册表,而不是依赖项注入。