在Spring应用程序上下文中的Integer.decode()
如果该值可以以八进制/十进制/十六进制形式存储,如何将属性的整数值传递给应用程序?
属性示例:
app.size=0120
//应该是80(十进制)。
春天背景:
<bean id="resource">
<property name="size">
<bean class="java.lang.Integer" factory-method="decode">
<constructor-arg name="nm">
<bean class="java.lang.String">
<constructor-arg value="${app.size}"/>
</bean>
</constructor-arg>
</bean>
</property>
</bean>
以上不起作用:
org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/context.xml]中定义的名称为'resource'的bean创建错误:
设置bean属性'size'时,不能创建类型为[java.lang.Integer]的内部bean'java.lang.Integer#159c5db';
嵌套的异常是org.springframework.beans.factory.UnsatisfiedDependencyException:在ServletContext资源[/WEB-INF/context.xml]中定义名称为'java.lang.Integer#159c5db'的Bean时创建bean的错误:
通过类型为[java.lang.String]的索引0的构造函数参数表示的不满意的依赖项:不明确的工厂方法参数类型 - 是否将正确的bean引用指定为工厂方法参数?
我知道我可以传递字符串的size
,然后在Java代码中decode()
。 但在我看来,在这种背景下进行这种转变似乎是正确的。 可能吗?
以下工作正常与十进制和十六进制数字:
<bean id="resource">
<property name="size" value="${app.size}" />
</bean>
感谢@Evgeniy Dorofeev的回答。
这工作:
<bean id="resource">
<property name="size">
<bean class="java.lang.Integer" factory-method="decode">
<constructor-arg value="${app.size}" type="java.lang.String" />
</bean>
</property>
</bean>
链接地址: http://www.djcxy.com/p/65347.html