我想通过为 PicoContainer 提供一个工厂方法(如@Provides
Guice 中的方法)来配置 PicoContainer,以便在每次我(重新)启动容器时创建一个新实例。这里的要点是我需要该实例在每个周期中都是一个单例,换句话说,我希望它被缓存。
问问题
251 次
1 回答
1
我找到了解决方案:配置一个FactoryInjector
MutablePicoContainer pico = new PicoBuilder()
.withCaching()
.withLifecycle()
.build();
pico.addAdapter(new FactoryInjector<WebDriver>(){
@Override
public WebDriver getComponentInstance(PicoContainer container, Type into) {
return new FirefoxDriver();
}
});
pico.start()
d1 = pico.getComponent(WebDriver.class);
d2 = pico.getComponent(WebDriver.class);
assert d1 == d2;
pico.stop();
pico.dispose();
d3 = pico.getComponent(WebDriver.class);
assert d1 != d3;
如您所见,pico 只会在第一次创建一个新实例。停止容器之前的任何后续请求都将返回相同的实例。
于 2017-06-15T08:05:44.737 回答