这个问题已经有了答案:
我正在尝试使用Spring注入来注入枚举。这样地:
public enum Car { HONDA("Honda", "hondas") { @Inject Carparts carparts; @Override public List<Carpart> getCarparts() { return carparts.getCarpartsListings(); } }; //more logic here }
我的carparts bean在配置类中定义如下:
@Bean @Singleton public Carparts geCarparts() { return new Carparts(); }
但不管我得到什么零值的腕关节注射。 任何帮助都将不胜感激。
您需要使用一个内部静态类创建一个变通方法,该类将是一个Spring组件,注入它并设置 carparts 整体 Car EnumSet .
carparts
Car EnumSet
public enum Car { private Carparts carparts; @Component public static class CarPartsInjector { @Inject private Carparts carparts; @PostConstruct public void construct() { for (Car car: EnumSet.allOf(Car.class)) car.setCarparts(carparts); } private void setCarparts(Carparts carparts) { this.carparts = carparts; } //... }
总的来说,我认为这不是一个合适的解决方案。
这里的问题是 数据模型 .
这个 Car 不应该是枚举。它应该是一个列有 Carparts , enum 按类型 CarType 或 ManufacturerType .
Car
Carparts
enum
CarType
ManufacturerType