Реализация провайдера Guice 3.0 по умолчанию

Я использую Guice в проекте и пытаюсь понять, как работают провайдеры по умолчанию. В разделе руководства "Поставщики инъекций" ( https://github.com/google/guice/wiki/InjectingProviders) приведен следующий простой пример:

public class RealBillingService implements BillingService {
  private final Provider<CreditCardProcessor> processorProvider;
  private final Provider<TransactionLog> transactionLogProvider;

  @Inject
  public RealBillingService(Provider<CreditCardProcessor> processorProvider,
      Provider<TransactionLog> transactionLogProvider) {
    this.processorProvider = processorProvider;
    this.transactionLogProvider = transactionLogProvider;
  }

  public Receipt chargeOrder(PizzaOrder order, CreditCard creditCard) {
    CreditCardProcessor processor = processorProvider.get();
    TransactionLog transactionLog = transactionLogProvider.get();

    /* use the processor and transaction log here */
  }
}

Теперь, что я хотел бы знать, это то, что реализации по умолчанию для processorProvider.get() и actionLogProvider.get() делают точно.

Например:

  • всегда создавать новый экземпляр CreditCardProcessor/TransactionLog
  • использовать пул объектов
  • что-то другое..

Я спрашиваю об этом, потому что в настоящее время я испытываю какое-то странное поведение в моем проекте, которое можно объяснить, если поставщик по умолчанию использует какую-то стратегию кэширования.

Спасибо

0 ответов

Другие вопросы по тегам