spring配置中的同步映射。1.2.9
我们正在使用Spring1.2.9,但无法使用map:util 这是我必须进行单元测试的代码构造函数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文件的
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文件中配置它?