java - 如何在 Spring 应用程序上下文中注入(inject) Jakarta 枚举?

标签 java spring enums

我有一个类,其构造函数采用 Jakarta enums 。我试图找到如何通过 Spring 轻松注入(inject)它XML 应用上下文。

例如:

枚举:

public class MyEnum extends org.apache.commons.lang.enums.Enum {
    public static final MyEnum MY_FIRST_VALUE = new MyEnum("MyFirstValue");
    public static final MyEnum MY_SECOND_VALUE = new MyEnum("MySecondValue");

    public static MyEnum getEnum(String name) {
        return (MyEnum) getEnum(MyEnum.class, name);
    }
    [...other standard enum methods]
}

要注入(inject)的类:

public class MyService {
    private final MyEnum status;
    public MyService(MyEnum status) {
        this.status = status;
    }
}

应用程序上下文:

<bean id="myService" class="MyService">
    <constructor-arg index="0" value="MyFirstValue" />
</bean>

当然,这样我就遇到了找不到匹配的编辑器或转换策略错误。 Spring 和 Jakarta 枚举之间是否有简单的集成?或者我应该编写自己的 PropertyEditor ?

最佳答案

查看<util:constant> Spring 的标签。它将要求您将架构添加到 xml 定义中。所以你最终会得到以下结果:

<bean id="myService" class="MyService">
  <constructor-arg index="0">
    <util:constant static-field="MyEnum.MY_FIRST_VALUE"/>
  </constructor-arg>
</bean>

该标签的定义和使用(包括XSD def)参见here .

关于java - 如何在 Spring 应用程序上下文中注入(inject) Jakarta 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/314664/

相关文章:

swift - 函数参数的类型可以是特定的枚举 'case' 吗?

java - 枚举和最终变量有什么区别?

java - 使用 javacv 进行 OCR

java - SpringVaadinServlet 调用 VaadinServlet 中缺少的方法?

java - 为什么实现接口(interface)的类不能使用 Java 中该接口(interface)的静态方法?

java - 如何自动更新本地maven存储库.m2文件夹以进行离线构建

java - Spring Boot Actuator metric heap.used 随着每次后续的执行器/metrics api 调用而增加

spring - 如何设置 Spring session 作用域 bean 的属性名称?

java - Spring Data 中 IQueryable 的等价物

c++ - 将整数类型转换为枚举 : functional cast vs initialization