如何使用Spring创建HashMap bean

Ahm*_*mad 2 java spring

我是将Spring与Java结合使用的新手,并且正在尝试使用Spring的配置文件实例化一个简单的HashMap。我想知道在Spring配置上下文文件中放置什么才能使这项工作生效。我知道util:map使用了某种方式,但是我看到的所有示例代码都是复杂的实例化(例如HashMap<Class<?>,List<String>>),难以理解,或者作者没有很好地解释他/她所做的事情,这让我感到沮丧!

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

HashMap<Integer, String>
Run Code Online (Sandbox Code Playgroud)

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

rya*_*694 5

我正在使用Spring 4.0.3,可以使用此配置。您可以看到映射的键类型是Integer,而值类型是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>
Run Code Online (Sandbox Code Playgroud)

以下是获取此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);
}`
Run Code Online (Sandbox Code Playgroud)

  • 绝对值得注意的是,这里的scope =“ prototype”很重要,因为java.util.HashMap不是线程安全的。此范围将导致为此bean id的每个请求创建一个新映射。这是必要的,因为出于线程安全原因,您通常不希望两个bean使用相同的映射。 (2认同)