代码之家  ›  专栏  ›  技术社区  ›  DPM

如何定义一个xml配置Springbean,它是调用枚举实例的结果?

  •  0
  • DPM  · 技术社区  · 7 年前

    我有一个枚举(这是kotlin,但没关系,也可以是Java)

    enum class AnEnum {
      A_VALUE {
        override fun aMethod(arg: ArgClass): AClass {
           //...
        }
      };
      abstract fun aMethod(arg: ArgClass): AClass
    }
    

    我需要一个spring xml bean中的bean,它是调用枚举值的“aMethod”的结果。

    看来我不能用“工厂法”来做这件事:

    <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。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sotirios Delimanolis    7 年前

    您可以使用 util:constant XML成员为枚举常量声明bean A_VALUE

    <util:constant id="myFactory" static-field="my.pckg.AnEnum.A_VALUE" />
    

    然后使用该bean作为 factory-bean 为您的 AClass

    <bean id="myBean" class="my.pckg.AClass" factory-bean="myFactory" factory-method="aMethod">
        <constructor-arg>
            <bean class="my.pckg.ArgClass"></bean>
        </constructor-arg>
    </bean>