【发布时间】:2011-04-27 10:30:00
【问题描述】:
我正在使用 Spring 3.0.x 并在我的一个实现中遵循枚举单例模式。
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?
或者我需要改变我的实现?
【问题讨论】:
-
如果你使用枚举来实现一个单例,为什么你需要注入它,如果只有一个实例,为什么要将它作为一个列表注入?
-
不仅有一个实例,而且有很多实例,它们跨模块,其他人以前曾作为单例实现,但一些开发人员选择实现为枚举单例模式(如我),但现在它开始失败因为需要收集 Person 的所有实例。