【发布时间】:2017-08-02 09:02:39
【问题描述】:
我有一个枚举:
public enum MyEnum {
INSTANCE;
@Autowired
Regroupements regroupements;
@PostConstruct
public void initi()
{
System.out.println("---------- i am not called!");
}
private MyEnum() {
System.out.println("---------- i am called!");
}
}
还有一个弹簧工厂
@Component
public class MyEnumFactory implements FactoryBean<MyEnum>{
@Override
public MyEnum getObject() throws Exception {
return MyEnum.INSTANCE;
}
@Override
public Class<?> getObjectType() {
return MyEnum.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
问题是: 当调用工厂的方法给我唯一的实例时, init() 方法永远不会被调用! 你会注意到,因为它是一个枚举,所以该类没有 @Component 注解。这就是我使用工厂的原因。
我想要的是启动一个post-construct,方式无关紧要。
【问题讨论】:
-
PostConstruct 注释用于需要在完成依赖注入以执行任何初始化后执行的方法,但在您的情况下,您使用的是 ENUM (MyEnum ),这无法实例化。所以 PostConstruct 将不工作@电极
标签: java spring enums singleton