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

Spring 5.3.9集合注入的实现类选择及相关问题咨询

Spring Framework 5.3.9集合注入相关问题解答

示例代码

Bean类代码

// bean class
private Map<String,String> myMap;
public void setMyMap(Map<String, String> myMap) {
    this.myMap = myMap;
}

XML配置代码

<!-- bean def xml -->
<bean id="student" class="com.my.bean.Student">
    <property name="myMap">
        <map>
            <entry key="name" value="someName"/>
            <entry key="school" value="someSchool"/>
        </map>
    </property>
</bean>

问题解答

  1. Spring会选择HashMap作为注入的实现类吗?还是其他实现类?
    Spring 5.3.9中,通过XML<map>标签注入的Map默认实现类是LinkedHashMap,而非HashMap。这是因为Spring会保留<entry>标签的插入顺序,而LinkedHashMap天然支持顺序维护。

  2. Spring是否允许自定义选择集合实现类?
    允许,有两种常见方式:

  • 在XML配置中直接指定集合实现类:给<map>标签添加class属性,例如:
    <map class="java.util.HashMap">
        <entry key="name" value="someName"/>
    </map>
    
    也可以指定自定义的Map实现类(只要符合Map接口规范)。
  • 通过@Bean方法返回指定集合:在配置类中定义返回目标集合实现类的@Bean方法,然后注入到目标Bean中。
  1. 若默认实现类随版本变更,在哪里可以找到相关文档?
  • Spring官方文档的「Core Technologies」章节下的「Bean Definition」部分,集合注入的小节会说明默认实现类;
  • Spring对应版本的Release Notes(版本发布说明),如果默认实现类有变更,会在其中标注;
  • 查看Spring源码中处理集合解析的类,比如org.springframework.beans.factory.support.BeanDefinitionValueResolver或org.springframework.beans.factory.support.DefaultListableBeanFactory中创建集合的相关方法(如createMap)。

已尝试操作

  • 查阅Spring Framework 5.x文档,未找到集合实现类相关内容;
  • 尝试阅读Spring Framework 5.x源码org.springframework.beans.factory.support.DefaultListableBeanFactory#resolveMultipleBeans,仍未找到实现类;
  • 自身Java能力有限;
  • 谷歌搜索相关内容但未找到有效结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:50:20