java – 我可以在枚举上使用Spring的@Component吗?
发布时间:2020-05-27 09:19:40 所属栏目:Java 来源:互联网
导读:我使用 Spring 3.0.x并遵循我的一个实现的枚举单例模式. public enum Person implements Nameable { INSTANCE; public String getName(){ // return name somehow (Having a variable but omitted for brevity) }
|
我使用 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无法初始化枚举类(这是可以理解的). 解决方法如果你真的需要使用基于枚举的单例(尽管事实上Spring bean是默认的单例),你需要使用其他方式在Spring上下文中注册该bean.例如,您可以使用XML配置:<util:constant static-field="...Person.INSTANCE"/> 或实现一个FactoryBean: @Component
public class PersonFactory implements FactoryBean<Person> {
public Person getObject() throws Exception {
return Person.INSTANCE;
}
public Class<?> getObjectType() {
return Person.class;
}
public boolean isSingleton() {
return true;
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
