Ответ 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"/>
Иногда 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>
Так как 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"/>
Вы должны уметь:
<constructor-arg value="10" type="int"/>
См. раздел 3.3.1.1.1.1 Spring Ссылка