我有3节课。
一个类扩展了父类,子类带有一个构造函数
@CustomComponent
public abstract class abstractA {
Object var1;
Object var2;
Object var3;
@Autowired
protected abstractA(Object arg1, Object arg2, Object arg3){
var1 = arg1;
var2 = arg2;
var3 = arg3;
}
}
这是从抽象类
扩展的父类@CustomComponent
public class parent extends abstractA {
@Autowired
public parent(Object arg2, Object arg3){
this(arg1FromSomeEnum, arg2, arg3);
}
protected parent(Object arg1, Object arg2, Object arg3){
super(arg1, arg2, arg3);
}
}
这是从父
扩展的子类 @CustomComponent
public class child extends parent {
@Autowired
public child(Object arg2, Object arg3){
super(arg1FromSomeEnum, arg2, arg3);
}
}
自定义组件看起来像这样
@Component
@Scope(value = "prototype")
@Inherited
public @interface CustomComponent {
String value() default "";
}
因此,当spring为特定测试实例化所有bean时,它会正确地实例化子bean。当父bean被实例化时,它获得2个bean [父和子]。所以,我最终得到错误,
父类型的多个bean
现在,这里有什么问题?如何使实例化正确?我应该使用@Qualifier还是@value,如果是这样,那么什么?
答案 0 :(得分:0)
是的,你应该使用@Qualifier注释。 以下链接更详细地解释了它。 Using @Qualifier annotation to create unique beans