Jenkins开发中的依赖注入

时间:2018-01-21 19:02:55

标签: java jenkins dependency-injection

我正在使用(现有的)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注入器代码?

2 个答案:

答案 0 :(得分:0)

具有不完整信息的wiki由Dan Alvizux编写,作为SO问题的一部分。它没有反映Jenkins如何实际进行DI。

为DI注册课程的正确方法似乎是使用@Extension注释并正常使用@Inject。 JavaDoc中讨论了一些其他选项。

答案 1 :(得分:0)

您无需触摸Guice。定义一个接口(根据文档扩展ExtensionPoint);将其实现为@Extension;并使用ExtensionList查找实现。基于JenkinsRule的测试可以使用@TestExtension添加模拟实现。请注意,正确地说这是服务注册表,而不是依赖项注入。