java创建带缓存的GUI提供程序
我试图理解@singleton与guice中的缓存
我有一个提供者。这将给我一个选择。这将进行大量json解析和一些繁重的工作
@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);
}
}
我的假设
当我在getWebdriver()
内执行fireFoxOptions.addPreference("pdfjs.disabled", true);
操作时,我的原始单例fireFoxOptions
实例是否被修改
如果是这样,下次调用getWebdriver()
时,它将返回fireFoxOptions
和fireFoxOptions.addPreference("pdfjs.disabled", true);
,因为上次我修改了这个单例对象
问题:
是否可以缓存getFireFoxOptions()
的所有内部处理并每次返回新的getFireFoxOptions
,以便始终使用默认设置选项获取fireFoxOptions
的新实例。addPreference(“pdfjs.disabled”,false);每次都不计算
共 (0) 个答案