我有一个带有重载构造函数的类,如下所示:
@Component
public class MyClass {
private ClassA myMemberA;
private ClassA myMemberB;
@Autowire
public MyClass(@Qualifier ("qualifierA") ClassA objectA, ClassA objectB) {
myMemberA = objectA;
myMemberB = objectB;
}
@Autowire
public MyClass(ClassA objectA) {
myMemberA = objectA;
}
}
基本上,一个构造函数有两个ClassA
参数,一个构造函数只有一个参数。我定义了两个ClassA
类型的bean。
我想根据用例调用两个构造函数中的一个并相应地自动装配。
当我运行此代码时,我收到错误:
Invalid autowire-marked constructor: ...
Found another constructor with 'required' Autowired annotation: ...
是否可能有重载的自动装配构造函数?如果是,那么正确的方法是什么?
谢谢!
答案 0 :(得分:0)
@Autowired(required=true)
或@Autowired(required=false)
。您只能拥有一个@Autowired(required=true)
的构造函数。默认情况下,如果您没有定义必需的属性,则会将其设置为true,这是您的问题。ClassA
的两个实例,则最好将@Autowired
注释添加到设置器或变量中。