Java 使用缓存创建guice提供程序
我试图理解@singleton与guice中的缓存 我有一个提供者。这将为我提供firefoxoption。这将进行大量json解析和一些繁重的工作Java 使用缓存创建guice提供程序,java,selenium-webdriver,guice,Java,Selenium Webdriver,Guice,我试图理解@singleton与guice中的缓存 我有一个提供者。这将为我提供firefoxoption。这将进行大量json解析和一些繁重的工作 @Singleton public class FirefoxOptionsProvider extends AbstractModule { @Provides @Named("FirefoxOptionsProvider") @Singleton public FirefoxOptions getFireF
@Singleton
public class FirefoxOptionsProvider extends AbstractModule {
@Provides
@Named("FirefoxOptionsProvider")
@Singleton
public FirefoxOptions getFireFoxOptions(FirefoxBinary firefoxBinary, Gson gson) {
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.setAcceptInsecureCerts(true);
fireFoxOptions.addPreference("pdfjs.disabled", false); // bydefault it is false
firefoxOptions.setPageLoadStrategy(PageLoadStrategy.NONE);
//some costly operation like json parsing and setting firefox options
return firefoxOptions;
}
我调用这个方法如下
@Log4j2
@AllArgsConstructor(onConstructor = @__(@Inject))
public class FirefoxDriverSetup {
private FirefoxOptionsProvider firefoxOptionsProvider;
public WebDriver getWebdriver() {
fireFoxOptions.addPreference("pdfjs.disabled", true);
return new FirefoxDriver(firefoxOptions);
}
}
我的假设
当我执行fireFoxOptions.addPreference(“pdfjs.disabled”,true)时,是否修改了我原来的singletonfireFoxOptions
实例代码>内部getWebdriver()
如果是这样,下次调用getWebdriver()
时,它将返回fireFoxOptions
withfireFoxOptions.addPreference(“pdfjs.disabled”,true)因为上次我修改了这个单例对象
问题:
是否可以缓存getFireFoxOptions()
的所有内部处理,每次都返回新的getFireFoxOptions
,以便始终使用默认设置fireFoxOptions.addPreference(“pdfjs.disabled”,false)获取fireFoxOptions
的新实例;没有每次计算它为什么要注入模块?请保持头脑清醒,将模块与提供者分开。您是否建议我直接从“getWebdriver()”调用FireFoxOptions Provider.getFireFoxOptions(),而不是注入它?我的意思是@Singleton
(并注入它)同一个类上的扩展抽象模块
带来了没人想要的麻烦。另外,您说您调用getFireFoxOptions(FirefoxBinary,Gson)
“如下”,但我在您的代码中没有看到它。我相信您必须后退一步,真正理解依赖注入是什么,并开始在较小的示例中使用Guice。我错误地理解了您建议这样使用“getFireFoxOptions(FirefoxBinary,Gson)”。我试着读一下这部分@Singleton(并注入它)和扩展AbstractModule。