有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我可以在enum上使用Spring的@Component吗?

我用的是Spring 3.0。并遵循我的一个实现的枚举单例模式

public enum Person implements Nameable {
    INSTANCE;

    public String getName(){
        // return name somehow (Having a variable but omitted for brevity)
    }
}

最近我们开始通过Spring收集这些类型,所以我需要将@Component添加到我的类中

@Component
public enum Person implements Nameable {
    INSTANCE;

    public String getName(){
        // return name somehow (Having a variable but omitted for brevity)
    }
}

收集方法是

@Autowired
public void collectNameables(List<Nameable> all){
    // do something 
}

这样做之后,我观察到了失败,原因是Spring无法初始化枚举类(这是可以理解的)

我的问题是-
有没有其他方法可以将枚举类标记为bean
或者我需要改变我的实现


共 (1) 个答案

  1. # 1 楼答案

    如果使用Spring管理依赖项注入,则不需要使用enum单例模式。你可以把你的人换成普通人。Spring将使用singleton的默认作用域,因此所有Spring注入的对象将获得相同的实例