gpt4 book ai didi

spring - 如何使用注解将值注入(inject) bean 构造函数

转载 作者:IT老高 更新时间:2023-10-28 13:46:41 28 4
gpt4 key购买 nike

我的 spring bean 有一个带有唯一强制参数的构造函数,我设法使用 xml 配置对其进行了初始化:

<bean name="interfaceParameters#ota" class="com.company.core.DefaultInterfaceParameters">
<constructor-arg>
<value>OTA</value>
</constructor-arg>
</bean>

然后我就这样用这个bean,效果很好。

 @Resource(name = "interfaceParameters#ota")
private InterfaceParameters interfaceParameters;

但我想用 annocations 指定构造函数 arg 值,例如

 @Resource(name = "interfaceParameters#ota")
@contructorArg("ota") // I know it doesn't exists!
private InterfaceParameters interfaceParameters;

这可能吗?

提前致谢

最佳答案

首先,您必须在 bean 定义中指定构造函数 arg,而不是在注入(inject)点中。然后,您可以利用 spring 的 @Value 注释(spring 3.0)

@Component
public class DefaultInterfaceParameters {

@Inject
public DefaultInterfaceParameters(@Value("${some.property}") String value) {
// assign to a field.
}
}

This is also encouraged as Spring advises constructor injection over field injection.

就我看到的问题而言,这可能不适合您,因为您似乎定义了同一个类的多个 bean,名称不同。因为你不能使用注解,你必须在 XML 中定义它们。

但是,我认为拥有这些不同的 bean 并不是一个好主意。您最好只使用字符串值。但我不能提供更多信息,因为我不知道你的确切类(class)。

关于spring - 如何使用注解将值注入(inject) bean 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4203302/

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