Java 使用缓存创建guice提供程序

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与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.addPreference(“pdfjs.disabled”,true)时,是否修改了我原来的singleton
fireFoxOptions
实例内部
getWebdriver()

如果是这样,下次调用
getWebdriver()
时,它将返回
fireFoxOptions
with
fireFoxOptions.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。