在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

上一篇: Integer.decode() in Spring application context

下一篇: Error 404 when reading properties file in spring