You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring XML配置含EnumMap的Resources Bean遇阻,求指导

问题:Spring XML配置中如何给EnumMap属性赋值?

我手头有一段Java代码,现在要在Spring XML配置文件里配置对应的Bean,已经写了一部分配置,但卡在了EnumMap<TypeEnum, String>这个属性的配置上,想请教怎么用util:map来搞定这个配置。

我的Java代码:

public enum TypeEnum { TYPE1, TYPE2, TYPE3; }
public class Resources { 
    List<String> suppliers; 
    EnumMap<TypeEnum, String> items; 
    // setter和getter方法
}

已完成的部分配置片段:

<bean name="products" class="com.company.xxxx.Resources">
    <property name="suppliers">
        <list>
            <value>suppliers1</value>
            <!-- 这里省略其他supplier项 -->
        </list>
    </property>
    <!-- 这里不知道怎么配置items这个EnumMap属性 -->
</bean>

解决方案:

要配置EnumMap,你只需要借助Spring的util:map标签,指定key-type为你的枚举类全路径,Spring就会自动识别枚举类型的键,创建对应的EnumMap实例并注入。

完整的配置示例如下:

<!-- 首先要在beans根标签里引入util命名空间,否则util:map标签无法被识别 -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/util
           http://www.springframework.org/schema/util/spring-util.xsd">

    <bean name="products" class="com.company.xxxx.Resources">
        <property name="suppliers">
            <list>
                <value>suppliers1</value>
                <value>suppliers2</value> <!-- 可以按需添加更多供应商 -->
            </list>
        </property>
        <property name="items">
            <!-- 指定key-type为你的枚举类全限定名 -->
            <util:map key-type="com.company.xxxx.TypeEnum" value-type="java.lang.String">
                <entry key="TYPE1" value="ItemA"/>
                <entry key="TYPE2" value="ItemB"/>
                <entry key="TYPE3" value="ItemC"/>
            </util:map>
        </property>
    </bean>
</beans>

这里有几个需要注意的点:

  • 必须在Spring XML的根beans标签中引入util命名空间及其对应的XSD约束,不然util:map标签会报错。
  • 通过key-type指定枚举类的全路径后,Spring会自动把这个map实例化为EnumMap类型,完美匹配Resources类里的items属性类型。
  • entry标签里的key直接写枚举的常量名就行,Spring会自动转换成对应的枚举实例。

这样配置后,Spring容器初始化时就会正确创建Resources实例,同时注入suppliers列表和items这个EnumMap了。

内容的提问来源于stack exchange,提问作者user3858442

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:52:42