簡體   English   中英

Spring-在抽象類級別的自動裝配字段中注入適當的服務實現

[英]Spring - Inject proper service implementation in abstract class level autowired field

我有2個班級層次結構:

* ClassA
  * ClassB

* AbstractClass
  * Class1
  * ...
  * Class5

AbstractClass自動連接ClassA如下:

public abstract class AbstractClass {

    @Autowired
    protected ClassA classA;
}

現在,我想將ClassA注入Class1 ,.., Class4實現,但將ClassB注入Class5 我知道我可以通過直接在實現類中而不是抽象類中進行注入來實現這一點(就像在類似問題中那樣 ),但這意味着我必須在同一字段中聲明一次而不是聲明五次。 另外,如果我想在抽象類中使用此字段,則必須在實現類中強制創建getter並使用它來獲取該服務。 它有效,但是在我看來,它並不喜歡正確的方法。

這是一種方法

@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;
    }
}

這使您可以在抽象類中擁有通用屬性和方法,並使用構造函數注入在子類中對其進行限定

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM