是否可以使用枚举或命名常量设置bean参数?

时间:2012-11-26 11:49:50

标签: java xml spring enums instantiation

例如我有

public enum ID { CODEC1, CODEC2 }

和一个豆

public class Bean {
   private ID id;
   public ID getId() { return id; }
   public void setId(ID value) { this.id = value; }
}

是否有可能以某种方式在Spring配置中使用符号名称?例如

<bean id="bean" class="Bean">
   <parameter name="id" value="CODEC1"/>
</bean>

2 个答案:

答案 0 :(得分:1)

如果您使用的是Spring 3.1,那么您编写的代码应该可以使用。使用以前的版本时,请尝试将枚举的valueOf定义为工厂方法:

<bean id="CODEC1" class="ID" factory-method="valueOf">
     <constructor-arg>   
         <value>CODEC1</value>
     </constructor-arg>
</bean>

<parameter name="id" value-ref="CODEC1"/>

答案 1 :(得分:1)

尝试使用以下SpEL:

<property name="id" value="#{T(my.package.ID).valueOf('CODEC1')}"/>