0

使用Spring 1.2.9していますが、map:util を使用できません

これは、単体テストが必要なコードのコンストラクターです。

public ViewAction() {
    screen = Collections.synchronizedMap(new HashMap());
    tab = Collections.synchronizedMap(new HashMap());
}

hashmapハッシュマップを挿入して値をに追加するにはどうすればよいですかconfiguration xml

注 : 質問は HASHMAP の使用に関するものではありません。それはxmlファイルの設定についてです。私は次のことを試しましたが失敗しました

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

上記の XML ファイルの構成中に発生したエラーは、BeanCreationException: Error creating bean with name 'viewactionbean' defined in class path resource です

注:Spring 1.2.9を使用しているため、「map:util」を使用できません

4

2 に答える 2

1

問題を解決するには、次の 2 つの方法があります。

  1. マップsynchronized(screen)内の何かにアクセスする必要がある場所ならどこでもブロックを使用できます。そうすれば、コードにアクセスするたびにコードを保護しているscreenため、実際には必要ありません。synchronizedMap
  2. Bean のセッターに を設定できるsynchronizedMapため、Spring がそれを注入するときに、Spring が提供する実際のインスタンスの代わりにラッパーを配置します。

セッターメソッドの例:

public void setScreen(Map screen) {
    this.screen = Collections.synchronizedMap(screen);
}

この最後のアプローチの問題は、Bean の単一のメソッド内のマップで 2 つ以上の操作を実行する必要がある場合でも、synchronized(screen)競合状態から保護するためにブロックが必要になることです。

春にマップを構成するには、これを実行できるはずです。

<bean id="..." class="....">
   <property name="screen">
     <map>
       <entry key="myKey" value="myValue" />
     </map>
   </property>
</bean>
于 2013-08-06T11:13:56.707 に答える
0

にはこのようなものを使用する必要がありますHashMap

private static Map<K,V> screen = Collections.synchronizedMap(new HashMap<K,V>);

Thread安全のためよりご利用いただけます。

 synchronized (screen) {

    }
于 2013-08-06T10:33:21.873 に答える