gpt4 book ai didi

java - Spring 重载构造函数 Autowiring

转载 作者:行者123 更新时间:2023-11-30 10:43:05 24 4
gpt4 key购买 nike

我有一个带有重载构造函数的类,如下所示:

@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。我希望根据用例相应地调用和 Autowiring 两个构造函数之一。

当我运行这段代码时,我得到了错误:

Invalid autowire-marked constructor: ...
Found another constructor with 'required' Autowired annotation: ...

是否可以重载 Autowiring 的构造函数?如果是,正确的做法是什么?

谢谢!

最佳答案

  1. 您需要通过编写如下内容来定义 Spring 将优先使用哪个构造函数:@Autowired(required=true)@Autowired(required=false)。您只允许有一个带有 @Autowired(required=true) 的构造函数。默认情况下,如果您没有定义所需的属性,它将被设置为 true,这就是您的问题所在。
  2. 我看不出有两个 Autowired 构造函数有什么意义,如果无论如何只连接其中一个构造函数的话。如果您尝试 Autowiring ClassA 的两个实例,最好将 @Autowired 注释添加到 setter 或变量。

关于java - Spring 重载构造函数 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37893855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com