gpt4 book ai didi

java - 使用 Spring-Factory 创建 ENUM bean,但从未调用 @PostConstruct

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:01 25 4
gpt4 key购买 nike

我有一个枚举:

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!");
}

}

还有一个 Spring 工厂

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

我想要的是启动一个后构造,方式并不重要。

最佳答案

你不能使用 enum 作为 bean(通常你也不必这样做),因此你既不能在其上使用 @PostConstruct,也不能 Autowiring 内部的任何内容:你的依赖项 Regroupements regroupements; 将是 null

关于java - 使用 Spring-Factory 创建 ENUM bean,但从未调用 @PostConstruct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45456241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com