У меня есть код ниже, чтобы сделать инъекцию зависимости, используя Guice. Первый использует инжектор конструктора, а другой добавляет @Inject
непосредственно над полем. Есть ли разница между этими двумя способами? Кажется, что инъекция конструктора рекомендуется на официальном сайте Guice.В чем разница между инъекцией через конструктор и инъекцией через аннотации полей с помощью Guice?
class BillingService {
private final CreditCardProcessor processor;
private final TransactionLog transactionLog;
@Inject
BillingService(CreditCardProcessor processor, TransactionLog transactionLog) {
this.processor = processor;
this.transactionLog = transactionLog;
}
...
}
И:
class BillingService {
@Inject
private final CreditCardProcessor processor;
@Inject
private final TransactionLog transactionLog;
BillingService() {
}
...
}