如何定义一个 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>