我有一个Enum:
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;
}
}
问题是: 在打电话时工厂的方法给我独特的INSTANCE, 永远不会调用init()方法! 你会注意到,因为它是一个枚举,所以该类没有@Component 注解。这就是我使用工厂的原因。
我想要的是发布一个后期构造,它并不重要。
答案 0 :(得分:0)
你不能使用enum作为bean(并且通常你不必),所以你既不能使用@PostConstruct
,也不能在内部自动装配任何内容:你的依赖{{1 }将成为Regroupements regroupements;
。