一尘不染

如何使用注释将值注入到bean构造函数

spring

我的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;

但是我想用注释指定contructor arg值,例如

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

这可能吗 ?

提前致谢


阅读 269

收藏
2020-04-18

共1个答案

一尘不染

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

@Component
public class DefaultInterfaceParameters {

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

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

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

2020-04-18