在Spring XML中声明整数,双精度,浮点数,字符串等

时间:2010-01-22 17:15:31

标签: java spring

偶尔,Spring无法弄清楚应该是什么类型的“价值”。当属性或构造函数的类型为“java.lang.Object”时会发生这种情况。在这些情况下,Spring默认为“java.lang.String”。有时这不是正确的选择,例如使用时:

<jee:jndi-lookup id="test" jndi-name="java:comp/env/test" 
   default-value="10" expected-type="java.lang.Integer"/>

如果查找失败并且必须回退到默认值,则表示类型不匹配。所以,相反,这需要做:

  <bean id="test" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/test" />
    <property name="defaultObject">
      <bean class="java.lang.Integer">
        <constructor-arg value="10" />
      </bean>
    </property>
  </bean>

这有点冗长,特别是如果它们很多的话。是否有一些方便的方法来声明一个Integer / Long / Double / Float / String文字,而不必使用这种格式:

      <bean class="java.lang.Integer">
        <constructor-arg value="10" />
      </bean>

2 个答案:

答案 0 :(得分:14)

从Spring 3.0开始,您可以使用Spring Expression Language:#{new Integer(10)}

<jee:jndi-lookup id="test" jndi-name="java:comp/env/test" 
    default-value="#{new Integer(10)}" expected-type="java.lang.Integer"/>

答案 1 :(得分:5)

你应该可以这样做:

<constructor-arg value="10" type="int"/>

Spring Reference

的第3.3.1.1.1.1节