Can I use spring injection, for injecting into an enum?
本问题已经有最佳答案,请猛点这里访问。
我正在尝试使用Spring注入来注入枚举。这样地:
1 2 3 4 5 6 7 8 9 10 11 12 | public enum Car { HONDA("Honda","hondas") { @Inject Carparts carparts; @Override public List<Carpart> getCarparts() { return carparts.getCarpartsListings(); } }; //more logic here } |
我的carparts bean在配置类中定义如下:
1 2 3 4 5 | @Bean @Singleton public Carparts geCarparts() { return new Carparts(); } |
但不管我得到什么零值的腕关节注射。任何帮助都将不胜感激。
您需要创建一个具有内部静态类的变通方法,该类将是一个弹簧组件,注入它并为整个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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; } //... } |
总的来说,我认为这不是一个合适的解决方案。
这里的问题是数据模型。