![](/img/trans.png)
[英]How to inject mock into @Autowired field in an abstract parent class with Mockito
[英]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.