Реализация провайдера 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
- использовать пул объектов
- что-то другое..
Я спрашиваю об этом, потому что в настоящее время я испытываю какое-то странное поведение в моем проекте, которое можно объяснить, если поставщик по умолчанию использует какую-то стратегию кэширования.
Спасибо