我的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;
这可能吗 ?
提前致谢
首先,必须在bean定义中而不是在注入点中指定构造函数arg。然后,你可以利用spring的@Value注释(spring 3.0)
@Value
@Component public class DefaultInterfaceParameters { @Inject public DefaultInterfaceParameters(@Value("${some.property}") String value) { // assign to a field. } }
就我所看到的问题而言,这可能不适合你,因为你似乎定义了同一类的多个bean,它们的名称不同。为此,你不能使用注释,必须在XML中定义它们。
但是,我认为拥有这些不同的bean并不是一个好主意。你最好只使用字符串值。但是我无法提供更多信息,因为我不知道你的确切课程。