Guice의 나의 이해는 점이다Guice : 필드 주입의 영향
이- 생성자 수준 주입 (
@Inject public class Widget(Dep one, Dep two)
) 가 Guice는 항상이Injector
를 통해 호출 될 때마다 그 생성자를 주입합니다 의미한다; 및 - 방법 수준 주입 (
@Inject public void setDepOne(Dep one)
) 은 Guice는 항상 너무 오래Widget
객체가 GuiceInjector
을 사용하여 만든이 두 가정이 올바른지,이 호출 될 때마다 그 방법을 주입합니다는 의미? 그렇지 않다면 명확히하십시오!
그럼 내가 신경 써야 할 부분은 다음과 같습니다. 필드 레벨 주입의 의미는 무엇입니까? 이 객체가 Guice 인젝터를 통해 생성 될 때 Guice는 항상 속성을 주입하는 것을 의미합니까
@Inject private Dep one;
? 이 경우 생성자 수준의 주입과 충돌한다고 생각합니다. 예를 들어
,는 다음을 일으킬 충돌/오류 : 사전에
이public class Widget {
@Inject private Dep one;
private Dep two;
// Dep one already injected as a field!
@Inject public Widget(Dep one, Dep two) {
// ...
}
}
감사합니다!
Guice는 싱글 톤과 같은 다른 바인딩을 찾지 못하면 주입하는 모든 종속성의 새 인스턴스를 항상 만듭니다. – logan
왜 테스트에 좋지 않은지 설명 할 수 있습니까? – suitianshi
이 경우 주입 된 필드는 비공개이므로 리플렉션과 같은 것을 사용하지 않으면 액세스하기가 어렵습니다. –