如何定义一个 xml-configuration spring bean,它是调用枚举实例的结果?
How to define an xml-configuration spring bean that is the result of a call to an enum's instance?
我有一个枚举(这是 kotlin,但没关系,也可以是 Java)
enum class AnEnum {
A_VALUE {
override fun aMethod(arg: ArgClass): AClass {
//...
}
};
abstract fun aMethod(arg: ArgClass): AClass
}
我需要 spring xml bean 中的一个 bean,它是调用枚举值 "aMethod" 的结果。
看来我不能以通常的方式使用 "factory-method":
<bean id="myBean" class="my.pckg.AClass" factory-method="???">
我知道如何获取枚举值的 bean,如果这有助于解决问题:
<bean id="aValueBean" class="my.pckg.AnEnum" factory-method="valueOf">
<constructor-arg>
<value>A_VALUE</value>
</constructor-arg>
</bean>
我不知道如何创建类型为 "AClass" 的 bean,它是在枚举实例上调用带有参数的方法的结果。我对 spring 不是很有经验,我之前使用过构造函数或静态方法来定义 bean。
您可以使用 util:constant
XML 成员为您的枚举常量声明一个 bean A_VALUE
<util:constant id="myFactory" static-field="my.pckg.AnEnum.A_VALUE" />
然后将该 bean 用作 factory-bean 用于您的 AClass
bean
<bean id="myBean" class="my.pckg.AClass" factory-bean="myFactory" factory-method="aMethod">
<constructor-arg>
<bean class="my.pckg.ArgClass"></bean>
</constructor-arg>
</bean>
我有一个枚举(这是 kotlin,但没关系,也可以是 Java)
enum class AnEnum {
A_VALUE {
override fun aMethod(arg: ArgClass): AClass {
//...
}
};
abstract fun aMethod(arg: ArgClass): AClass
}
我需要 spring xml bean 中的一个 bean,它是调用枚举值 "aMethod" 的结果。
看来我不能以通常的方式使用 "factory-method":
<bean id="myBean" class="my.pckg.AClass" factory-method="???">
我知道如何获取枚举值的 bean,如果这有助于解决问题:
<bean id="aValueBean" class="my.pckg.AnEnum" factory-method="valueOf">
<constructor-arg>
<value>A_VALUE</value>
</constructor-arg>
</bean>
我不知道如何创建类型为 "AClass" 的 bean,它是在枚举实例上调用带有参数的方法的结果。我对 spring 不是很有经验,我之前使用过构造函数或静态方法来定义 bean。
您可以使用 util:constant
XML 成员为您的枚举常量声明一个 bean A_VALUE
<util:constant id="myFactory" static-field="my.pckg.AnEnum.A_VALUE" />
然后将该 bean 用作 factory-bean 用于您的 AClass
bean
<bean id="myBean" class="my.pckg.AClass" factory-bean="myFactory" factory-method="aMethod">
<constructor-arg>
<bean class="my.pckg.ArgClass"></bean>
</constructor-arg>
</bean>