在属性文件中配置以下属性:
readTimeout=10
。我想用它来设置系统属性oracle.jdbc.ReadTimeout
,但首先将它乘以1000(转换为ms。)
我尝试了以下,但不起作用:
<bean id="systemPrereqs"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" value="#{@systemProperties}" />
<property name="targetMethod" value="putAll" />
<property name="arguments">
<util:map>
<entry key="oracle.jdbc.ReadTimeout"
value="#{T(java.lang.Integer).valueOf('${readTimeout}')*1000}" />
</util:map>
</property>
</bean>
没有创建oracle.jdbc.ReadTimeout
系统属性。
但是,如果我使用以下表达式:
#{'${readTimeout}'*1000}
然后对其进行评估,并创建oracle.jdbc.ReadTimeout
系统属性,但使用101010 ....(一千次重复)。
似乎Spring使用T(java.lang.Integer).valueOf
进行类型转换时出现问题。可能是因为util:properties / map definitions不支持spEL表达式。
答案 0 :(得分:0)
不要使用'${readTimeout}'
,readTimeout
会正常工作:
<entry key="oracle.jdbc.ReadTimeout" value="#{new Integer(readTimeout) * 1000}" />