【问题标题】:Is it possible to setup bean parameters with enums or named constants?是否可以使用枚举或命名常量设置 bean 参数?
【发布时间】:2012-11-26 11:49:49
【问题描述】:

例如我有

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>

【问题讨论】:

    标签: java xml spring enums instantiation


    【解决方案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"/>
    

    【讨论】:

    • 你的意思是 Spring 3+ 将看到该字段类型为 enum 并会自动扫描该 enum 类以获取字符串表示形式???太好了!
    【解决方案2】:

    试试下面的 SpEL:

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

    【讨论】:

      猜你喜欢
      • 2014-12-28
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多