java - 使用缓存创建 guice 提供程序
问题描述
我想了解@singleton vs guice 中的缓存
我有一个提供者。这会给我firefoxoption。这会做很多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);
}
}
我的假设
fireFoxOptions
当我在 fireFoxOptions.addPreference("pdfjs.disabled", true);
里面做的时候,我原来的单例实例会被修改吗getWebdriver()
如果是这样,当我getWebdriver()
下次调用时它会返回fireFoxOptions
,fireFoxOptions.addPreference("pdfjs.disabled", true);
因为上次我修改了这个单例对象
问题:
是否可以缓存所有的内部处理getFireFoxOptions()
并每次都返回新的getFireFoxOptions
,以便我总是得到 fireFoxOptions
默认设置的新实例 fireFoxOptions.addPreference("pdfjs.disabled", false); 无需每次都计算