如何在Spring配置中传递静态常量作为参数?

时间:2012-07-18 11:15:01

标签: java spring

这是我的班级:

public class MyClassA {

    private int mode;
    public static int THREAD_MODE=1;
    public static int CLUSTER_MODE=2;

    public MyClassA(int mode) {
         this.mode= mode;
    }
}

我希望将我的spring配置xml中的这些信息发送到我的类实例。我如何实现这样的目标?

<bean id="myclass" class="com.test.MyClassA"> <constructor-arg value="MyClassA.THREAD_MODE"/> </bean>

2 个答案:

答案 0 :(得分:13)

util命名空间提供了一个constant元素,它正是这样做的:

<constructor-arg>
    <util:constant static-field="MyClassA.THREAD_MODE"/>
</constructor-arg>

此功能的支持由FieldRetrievingFactoryBean类提供。

这需要在<beans>元素中添加命名空间和一些架构,即下面提到util的项目。

<beans xmlns="..."
    xmlns:xyz="..."
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="...
    ...
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd">

答案 1 :(得分:2)

我可能会使用枚举而不是整数(更多类型安全且范围有限)。 Spring将支持注入枚举。有关详细信息,请参阅this article