当前位置: 首页 > 知识库问答 >
问题:

我可以使用spring injection来注入枚举吗?[副本]

从阎宝
2023-03-14

我正在尝试使用spring injection注入到枚举中。像这样:

public enum Car {
HONDA("Honda", "hondas") {
    @Inject
    Carparts carparts;

    @Override
    public List<Carpart> getCarparts() {
        return carparts.getCarpartsListings();
    }
};
//more logic here
}

我的Carparts bean在configuration类中定义如下:

@Bean
@Singleton
public Carparts geCarparts() {
    return new Carparts();
}

但不管我得到的是车体注射的空值。任何帮助都将不胜感激。

共有1个答案

邵骏喆
2023-03-14

您需要使用一个将是Spring组件的内部静态类创建一个变通方法,注入它并为整个car enumset设置carparts

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不应该是枚举。它应该是一个以carpartsenum作为类型的类,如cartypemanufacturertype

 类似资料:
  • 问题内容: 我正在使用Spring 3.0.x,并按照枚举单例模式进行实现。 最近,我们开始通过Spring收集这些类型,因此我需要在类中添加@Component。 收集方法是 完成此操作后,我观察到失败,原因是Spring无法初始化枚举类(这是可以理解的)。 我的问题是- 是否有其他方法可以将枚举类标记为bean? 还是我需要更改实施方式? 问题答案: 如果确实需要使用基于枚举的单例(尽管默认情

  • 从这个问题,有可能注入map与枚举? 例如,我有枚举: 我有一些与实现的接口: 但这样的注入不起作用: 我想自动注入。如何修复它,在spring框架端生成这样的代码?

  • 问题内容: 是否可以在Java枚举中使用,还是需要使用?在我的测试中,它始终有效,但是我不确定是否可以保证。特别是,在枚举上没有方法,因此我不知道是否有可能获得一个枚举,该枚举将返回不同于的值。 例如,这样可以吗: 还是我需要这样写: 问题答案: 仅需2美分:这是Sun发布的Enum.java的代码,并且是JDK的一部分:

  • 问题内容: 这是我要完成的工作,我有一个包含一些值的枚举的类,我想对该类进行子类化并向该枚举添加更多值。这是一个不好的例子,但是: 因此HexDigits.Digit包含所有十六进制数字。那可能吗? 问题答案: 不,这不可能。最好的办法是使两个枚举实现和接口,然后使用该接口代替枚举。所以:

  • 问题内容: 我正在阅读Swift浏览文档,并且遇到了问题。这是代码: 该功能将无法正常工作,我想知道是否有一种方法可以更改枚举的关联值,以及如何更改? 问题答案: 最直接的问题是,当您应该使用声明不可变变量(用声明)时,您尝试更改其值。但是,由于您的变量包含关联值的副本,因此,这不会解决此特定问题,但是通常这是您需要注意的。 如果要解决此问题,则需要将该函数声明为muting函数,并根据具体情况将

  • 问题内容: 我正在重新编写一些代码,并且已经确定了重新创建类的方式,因为存在固定数量的工作表,所以我将它们创建为枚举。这是基于构建器模式与伸缩构建器的可读性来做出的决定。 我获取的代码抓取了一些.xls文件,添加了标头(并从其他.xls文件中读取了一些标头),甚至还有一些子表。然后,它以特定方式将各种工作表合并在一起,以在主要excel工作簿上制作选项卡。我的问题是某些工作簿选项卡采用不同数量的工