【发布时间】:2014-09-26 07:57:59
【问题描述】:
如何将整数值从属性传递给应用程序,如果该值可以以八进制/十进制/十六进制形式存储?
属性示例:
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 中定义的名称为“资源”的 bean 资源[/WEB-INF/context.xml]:
在设置时无法创建 [java.lang.Integer] 类型的内部 bean 'java.lang.Integer#159c5db' bean 属性“大小”;
嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名称为“java.lang.Integer#159c5db”的 bean 时定义错误 ServletContext 资源[/WEB-INF/context.xml]:
通过构造函数参数表达的不满足的依赖关系 [java.lang.String] 类型的索引 0:不明确的工厂方法参数 类型 - 您是否将正确的 bean 引用指定为工厂方法 论据?
我知道我可以将size 作为字符串传递,然后在java 代码中传递decode()。但在我看来,在上下文中进行这种转换似乎是正确的。有可能吗?
以下适用于十进制和十六进制数字:
<bean id="resource">
<property name="size" value="${app.size}" />
</bean>
【问题讨论】:
标签: java spring properties refactoring