4
다음 코드에서 내 기본 클래스의 생성자에 "삽입"주석을 달아야합니까? 기본 클래스가 추상 클래스 인 경우는 어떻습니까?Java 및 Guice - 상속 및 추상화를 처리하는 방법?
DI를 사용할 때 생성자에서 super를 호출해야합니까?
public class Base {
@Inject
public Base(IConfig config) {
// Do stuff
}
}
public class A extends Base {
@Inject
public A(IConfig config) {
super(config);
}
}
콘크리트 주입식 클래스를 정확히 확장해야하는 이유는 무엇입니까? 사람들이이 일을하려고하는 곳에서 개인적으로 보았던 대부분의 경우는 다른 방법을 통해 더 잘 해결할 수 있습니다. 예를 들어, 생성자 매개 변수가 제공되는 방법을 변경하는 경우'@ Provides' 메소드와 같은 것이 훨씬 더 잘 작동하는 경향이 있습니다. 구체적인 메소드를 오버라이드하는 것이라면 이는 기본 클래스가 현실적인 사용 사례를 다루지 않고 어쨌든 재 설계해야한다는 신호입니다. 그리고 Guice 우수 사례 위키는'@Inject public' 생성자에 대해 경고합니다 (http://code.google.com/p/google-guice/wiki/KeepConstructorsHidden 참조) –