![](/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.