2017-11-23 3 views
0

추상 클래스 수준 autowire가 필드에 적절한 서비스 구현을 주입 , .., Class4 구현이지만 ClassBClass5에 입력합니다. 나는 추상적 클래스 (예 : Similar Question)보다는 직접 클래스를 구현하여이를 수행 할 수 있다는 것을 알고 있지만, 이는 동일한 필드를 한 번만 선언하지 말고 다섯 번 선언해야한다는 것을 의미합니다. 또한 추상 클래스에서이 필드를 사용하려면 클래스를 구현할 때 getter를 만들고 해당 서비스를 얻는 데 사용해야합니다. 그것은 작동하지만 올바른 방법을 좋아하지 않는 것 같습니다.봄 내가 2 개 클래스 계층이

+0

를 사용하여 자식 클래스에서 그 자격으로 수행 할 수 있도록 해줍니다 하나의 방법입니다 어린이 수업 – 11thdimension

+0

예를 답으로 보여 주시겠습니까? 그래서 작동한다면 받아 들일 수 있을까요? – Dcortez

답변

1

여기가

@Component 
class ClassA {} 

@Component 
class ClassB extends ClassA {} 

abstract class AbstractClass { 
    protected ClassA classA; 
} 

@Component 
class Class1 extends AbstractClass { 
    public Class1(ClassA classA) { 
     this.classA = classA; 
    } 
} 
//... Same for Class2/3/4 

@Component 
class Class5 extends AbstractClass { 
    public Class5(ClassB classB) { 
     this.classA = classB; 
    } 
} 

이 당신이 추상 클래스의 공유 재산 및 방법을 가지고 있다면 것은 당신이 생성자 주입을 사용할 수 있습니다 생성자 주입

+0

분명히 좋아 보이며 상위 클래스의 서비스에 직접 액세스 할 수 있습니다. 도와 주셔서 감사합니다! – Dcortez

+0

여러분을 환영합니다! – 11thdimension