Мое понимание Guice заключается в следующем:
- Инъекция на уровне конструктора (
@Inject public class Widget(Dep one, Dep two)
) подразумевает, что Guice всегда будет вводить этот конструктор каждый раз, когда он вызывается черезInjector
; и - Ввод уровня метода (
@Inject public void setDepOne(Dep one)
) подразумевает, что Guice всегда будет вводить этот метод всякий раз, когда он вызывается, пока объектWidget
был создан с помощью GuiceInjector
Правильны ли эти два предположения? Если нет, уточните!
Итак, что я повесил трубку: каковы последствия внедрения на уровне поля?
@Inject private Dep one;
Означает ли это, что Guice всегда будет вводить свойство, когда объект создается через инжектор Guice? В этом случае я предполагаю, что он конфликтует с инъекцией на уровне конструктора.
Например, вызывает ли конфликт/ошибку следующее:
public class Widget {
@Inject private Dep one;
private Dep two;
// Dep one already injected as a field!
@Inject public Widget(Dep one, Dep two) {
// ...
}
}
Спасибо заранее!