使用Spring-Factory创建的ENUM bean,但从不调用@PostConstruct

时间:2017-08-02 09:02:39

标签: java spring enums singleton

我有一个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 注解。这就是我使用工厂的原因。

我想要的是发布一个后期构造,它并不重要。

1 个答案:

答案 0 :(得分:0)

你不能使用enum作为bean(并且通常你不必),所以你既不能使用@PostConstruct,也不能在内部自动装配任何内容:你的依赖{{1 }将成为Regroupements regroupements;