首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在黄瓜中配置PicoContainer?

如何在黄瓜中配置PicoContainer?
EN

Stack Overflow用户
提问于 2020-02-27 21:15:15
回答 1查看 1.6K关注 0票数 2

我想手动地配置我的微微容器,以便为我的黄瓜构建配置配置对象的实例。也就是说,在春季提供配置对象a @ConfigurationProperties

然而,目前尚不清楚如何做到这一点。该网站提供了大量关于如何操作容器的文档,但没有围绕这些例子的上下文。我使用Cucumber maven构建,使用cucumber-picocontainer依赖项。

理想情况下,PicoContainer可以从像Spring这样的主要yaml/ config文件中提取依赖项,但是如果我能够手动将它们输入正在运行的容器中,这也是可行的。

为了清楚起见,我知道我能做到:

代码语言:javascript
复制
@RunWith(Cucumber.class)
public class RunWithCucumberTest{

    public PicoContainer getContainer(){
        MutablePicoContainer pico = new DefaultPicoContainer();
        //do the config, inject onjects, etc

        return pico;
    }
}

但这并不意味着它返回的实例实际上用于注入我的属性。

最后,我正在寻找一种使用pico容器来执行以下操作之一的方法:

  • 可以自动创建配置类,通过文件(yamlproperties等)配置
  • 手动配置正在运行的容器,自己从配置中创建对象,并将它们交给pico,以便稍后注入

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-27 23:12:54

这些功能是不可用的。Picocontainer是一个非常简单的依赖注入框架,它的使用甚至更简单。为了有效地使用它,尽量不要像构造应用程序图一样使用它。而是使用它来构造用于测试应用程序的API。

通常情况下,您最终会包装无法实例化自身的对象,以及所有这些包装器。这不是很灵活,但通常不需要这种灵活性。步骤定义+支持类应该操作测试中的应用程序。

如果不起作用,还可以使用cucumber-guicecucumber-spring,它们分别使用Guice和Spring进行依赖注入。

您还可以滚动您自己的PicoFactory实现,这是一个微不足道的代码,如果它是唯一的ObjectFactory实现,它将被自动使用。否则,可以使用object-factory属性/选项。

代码语言:javascript
复制
public class Configuration {

    private final Properties someProperties = new Properties();

    public Configuration() throws IOException {
        someProperties.load(Properties.class.getResourceAsStream("some.properties"));
    }

    public String entryPoint() {
        return someProperties.getProperty("example.entry-point", "localhost:7070/entry");
    }

}

public class StepDefinitions {

    private final Configuration configuration;
    private Application application;

    public StepDefinitions(Configuration configuration) {
        this.configuration = configuration;
    }

    @Given("a thing is done")
    public void aThingIsDone(){
        String entryPoint = configuration.entryPoint();
        this.application = //... create application with entry point
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60441863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档