有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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()时,它将返回fireFoxOptionsfireFoxOptions.addPreference("pdfjs.disabled", true);,因为上次我修改了这个单例对象

问题:

是否可以缓存getFireFoxOptions()的所有内部处理并每次返回新的getFireFoxOptions,以便始终使用默认设置选项获取fireFoxOptions的新实例。addPreference(“pdfjs.disabled”,false);每次都不计算


共 (0) 个答案