gpt4 book ai didi

java - Spring Autowiring /Java

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

如果我有两个类,例如:

Class A {
public String importantValue = "stringvalue";

@Autowire
public B b;
}

@Component
@Scope("prototype");
Class B {
// This should be set automatically
// from IOC Container upon injection.
public String importantValueFromA;
}

这可能吗?一旦 B 类被注入(inject)到 A 中,它就会自动设置 B 中的值。

最佳答案

您希望类A 对注入(inject)的类B 进行一些设置吗?很简单:

@Service
class A {
private String importantValue = "stringvalue";

@Autowire
private B b;

@PostConstruct
public void initB() {
b.importantValueFromA = this.importantValue;
}
}

显然,您无法在 A.A 构造函数中访问 b.importantValueFromA,因为注入(inject)尚未发生。但是@PostConstruct回调保证在注入(inject)后被调用。

另一种方法是使用setter注入(inject),但感觉有点hacky:

private B b;

@Autowire
public void setB(B b) {
this.b = b;
b.importantValueFromA = this.importantValue;
}

两个建议:

  • 将您的字段保持私有(private)并使用 setter /方法来访问它们。
  • 将原型(prototype)作用域 bean 注入(inject)单例 bean 可能会产生一些意想不到的结果。足以说明只会创建一个 B 实例。

关于java - Spring Autowiring /Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027328/

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