spring配置中的同步映射。1.2.9

spring配置中的同步映射。1.2.9,spring,hashmap,Spring,Hashmap,我们正在使用Spring1.2.9,但无法使用map:util 这是我必须进行单元测试的代码构造函数 public ViewAction() { screen = Collections.synchronizedMap(new HashMap()); tab = Collections.synchronizedMap(new HashMap()); } 如何注入hashmap并将值添加到配置xml中的hashmap 注意:问题不是关于使用HASHMAP。它是关于配置xml文件的

我们正在使用Spring1.2.9,但无法使用map:util

这是我必须进行单元测试的代码构造函数

public ViewAction() {
    screen = Collections.synchronizedMap(new HashMap());
    tab = Collections.synchronizedMap(new HashMap());
}
如何注入hashmap并将值添加到
配置xml
中的
hashmap

注意:问题不是关于使用HASHMAP。它是关于配置xml文件的。我尝试了以下方法,但失败了

<bean name="viewactionbean" class="com.test.helper.web.ViewAction">
    <property name="screen">
        <map>
        </map>
    </property>
</bean>

配置上述XML文件时出错:, BeanCreationException:创建名为“viewactionbean”的bean时出错,该bean在类路径资源中定义


注意:因为我使用的是Spring1.2.9,所以我不能使用“map:util”

您必须为
HashMap
使用类似的东西

private static Map screen=Collections.synchronizedMap(新HashMap)

对于
线程
安全,您可以使用

 synchronized (screen) {

    }

您可以用两种不同的方式解决问题:

  • 您可以在需要访问
    屏幕中任何内容的任何地方使用
    同步(屏幕)
    块。这样,您就不需要真正的
    synchronizedMap
    ,因为您已经在随时访问您的代码了
  • 您可以在bean的setter中设置
    synchronizedMap
    ,因此当Spring注入它时,您会在它周围放置一个包装器,而不是Spring提供的实际实例:
  • 示例setter方法:

    public void setScreen(Map screen) {
        this.screen = Collections.synchronizedMap(screen);
    }
    
    最后一种方法的问题是,如果您需要在bean中的一个方法内执行映射中的两个或多个操作,您仍然需要
    synchronized(screen)
    块来防止竞争条件

    要在spring中配置地图,您应该能够执行以下操作:

    <bean id="..." class="....">
       <property name="screen">
         <map>
           <entry key="myKey" value="myValue" />
         </map>
       </property>
    </bean>
    
    
    
    Ankit,我需要将xml文件中的值注入映射。好的,那么您在
    .xml
    文件中配置了
    bean.java
    文件了吗?这正是我想要的。如何在xml文件中配置它?