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