gpt4 book ai didi

java - 如何使用先前 Autowiring 的对象 Autowiring 1-arg 对象构造函数?

转载 作者:行者123 更新时间:2023-11-30 03:47:20 25 4
gpt4 key购买 nike

给定以下MyConstructorClass:

@Component
public class MyConstructorClass{

MyObj var;
public MyConstructorClass( MyObj constrArg ){
this.var = var;
}
...
}

如何 Autowiring 需要先前 @Autowired 字段中的构造函数参数的字段?下面是一个例子。

注意 - 我相信这个问题与此类似 one ,除了我的构造函数参数不是字符串。此代码示例根据此问题稍作修改。

@Service
public class MyBeanService{

@Autowired
CustomObject customObj; // no arguments to constructor

@Autowired
MyConstructorClass myConstructorClass; // requires `customObj` as an argument

....
}

如何修改 MyBeanService 以使用 customObj 正确构造 myConstructorClass

最佳答案

你只需要用@Autowired注释MyConstructorClass的构造函数即可:

@Component
public class MyConstructorClass {
final private CustomObject customObj;

@Autowired
public MyConstructorClass(CustomObject customObj) {
this.customObj = customObj;
}
}

另一种替代方案(无需将 @Autowired 构造函数添加到 MyConstructorClass)是使用 @Configuration bean:

@Configuration
public class MyConfiguration {

@Bean
public CustomObject customObj() {
return customObj;
}

@Bean
public MyConstructorClass myConstructorClass() {
return new MyConstructorClass(customObj());
}

@Bean
public MyBeanService myBeanService() {
return new MyBeanService();
}
}

关于java - 如何使用先前 Autowiring 的对象 Autowiring 1-arg 对象构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320756/

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