gpt4 book ai didi

java - 将bean注入(inject)到默认构造函数中

转载 作者:行者123 更新时间:2023-12-01 14:22:17 25 4
gpt4 key购买 nike

假设我有一个这样的类(class):

public class A {

private B b;

public A() {

}

// Some code calling methods in b.
}

如何通过 XML 配置将 B 的实例注入(inject)到 A 中,而无需在 Spring 中添加参数化构造函数?

我可以同时拥有参数化构造函数和 setter 吗?

 public class A {

private B b;

public A(B b) {
this.b = b;
}

public void setB(B b) {
this.b = b;
}
// Some code calling methods in b.
}

编辑:感谢您的所有回答。我的实际问题是我有一个这样的类(class):

公共(public)A类{

 private B b;

public A(B b) {
this.b = b;
}
// Some code calling methods in b.
}

并且我希望为上述类提供一个默认构造函数,而不出于向后兼容性原因删除参数化构造函数。

所以,

  1. 当我添加一个 bean 时,该 bean 是否会自动注入(inject)到默认构造函数中?或者我应该在 XML 文件中进行其他配置以将其注入(inject)其中?
  2. 如果我添加 setter,我应该在 XML 中进行哪些额外的配置更改以及如何更改?

假设我有一个如下所示的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="name"
class="A">
<constructor-arg ref="B" />
</bean>

</beans>

最佳答案

您可以通过 Setter Injection 进行操作。为此,您需要为您的成员字段添加一个 setter 方法 b

Can i have both parameterized constructor and a setter as well ?

是的,你可以拥有。

如果参数化构造函数是 bean 中唯一的构造函数,那么您应该使用构造函数注入(inject)。

否则为您的类创建无参默认构造函数(以及参数化构造函数),并使用 setter 或构造函数注入(inject)。

关于java - 将bean注入(inject)到默认构造函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17440566/

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