Объявление целых чисел, парных разрядов, поплавков, строк и т.д. В Spring XML

Иногда 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>

Ответы

Ответ 1

Так как Spring 3.0, вы можете использовать Spring Язык выражения: #{new Integer(10)}

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

Ответ 2

Вы должны уметь:

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

См. раздел 3.3.1.1.1.1 Spring Ссылка