gpt4 book ai didi

java - 如何在java枚举中注入(inject)依赖项?

转载 作者:行者123 更新时间:2023-11-30 01:53:20 26 4
gpt4 key购买 nike

我正在尝试将 bean 注入(inject)到枚举中,但在调用 someMethod 时我不断收到空指针异常。

本文提到的答案Inject bean into enum为我工作。我想知道为什么我的代码不起作用

@Component
public class DataProvider {

public int method1() {
//somecode
}

}

public enum Genres {

DRAMA(1,”Drama”);
ADVENTURE(2,”Adventure”);
HORROR(3,”Horror”);

private int id;
private String name;

@Inject DataProvider dataprovider;

public int someMethod() {
return dataprovider.method1();
}

}

最佳答案

您链接的答案的作用是循环enum值并使用setter注入(inject)DataProvider依赖项

public void postConstruct() {
for (ReportType rt : EnumSet.allOf(ReportType.class)) {
rt.setDataPrepareService(dataPrepareService);
}
}

它之所以有效,是因为 ReportTypeServiceInjector 类是一个内部的静态类,因此 Spring 可以看到并实例化它。

无论如何,这都是一个疯狂的设计。避免它。
最终,保持枚举简单并提取 DataProvider 用法。

您的原始代码不起作用,因为 Spring 无法在 enum 中使用 @Autowire/@Inject 依赖项。

关于java - 如何在java枚举中注入(inject)依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55316832/

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