【问题标题】:How do I create a HashMap bean using Spring如何使用 Spring 创建 HashMap bean
【发布时间】:2016-10-20 11:55:16
【问题描述】:

我是使用 Spring 和 Java 的新手,我正在尝试使用 Spring 的配置文件实例化一个简单的 HashMap。我想知道在 Spring 配置上下文文件中放入什么来使其工作。我知道util:map 以某种方式被使用,但我看到的所有示例代码要么是复杂的实例化(例如HashMap<Class<?>,List<String>>),难以理解,要么作者没有很好地解释他/她做了什么,让我很沮丧!

如果我想生成此规范的简单 HashMap,我需要在 beans.xml 上下文文件中放入什么? ...

HashMap<Integer, String>

请展示一个清晰的示例来显示 XML 并说明您所做的任何命名假设。

【问题讨论】:

标签: java spring


【解决方案1】:

我用的是Spring 4.0.3,可以用这个配置。可以看到map的key类型是Integer,value类型是String。

<bean id="map" class="java.util.HashMap" scope="prototype" >
    <constructor-arg>
        <map key-type="java.lang.Integer" value-type="java.lang.String">
            <entry key="1" value="one" />
            <entry key="2" value="two" />
        </map>
    </constructor-arg>
</bean>

获取此 bean 的示例如下。

public static void main(String[] args){

    ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

    Map<Integer,String> map = (HashMap) context.getBean("map");
    System.out.println(map);
}`

【讨论】:

  • 谢谢。你能告诉我以下两行是做什么的,它们真的需要吗?:&lt;entry key="1" value="one" /&gt;&lt;entry key="2" value="two" /&gt;
  • 他们将初始值放入地图中,您不需要它们。
  • 绝对值得注意的是 scope="prototype" 在这里很重要,因为 java.util.HashMap 不是线程安全的。此范围将导致为此 bean id 的每个请求创建一个新映射。这是必要的,因为出于线程安全的原因,您通常不希望两个 bean 使用相同的映射。
  • 加上 +1 用于添加 scope="prototype"。正如我在之前的回复帖子中解释的那样,这很重要。
猜你喜欢
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
相关资源
最近更新 更多