Java 言語では、独自の Comparatorクラスを使用して TreeMap を作成できます。ここで、そのマップの 1 つを作成し、それを Bean の 1 つに割り当てたいと思います。マップの値も事前に知っているので、Springにそれらを注入させることに興味があります。問題は、マップ型を宣言し、コンストラクタ パラメータ (Comparator
クラスを渡すために必要) を使用して構築し、Spring を使用して値を注入できるかどうかです。
この種の宣言は機能しますが、後で値を注入することはできません。
<bean id="antennaFilteringManagerMap" class="java.util.TreeMap">
<constructor-arg ref="nameComparator" />
</bean>
<bean id="nameComparator" class="com.tadic.model.detector.Antenna.NameComparator" />
一方、Spring マップ ユーティリティを使用する場合、マップのクラスを指定する方法はいくつかありますが、コンストラクター arg を渡すことはできません。
<bean class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="targetMapClass">
<value>java.util.TreeMap</value>
</property>
<property name="sourceMap">
<map>
<entry key-ref="antenna1" value-ref="locationEventFilteringManager1" />
</map>
</property>
</bean>
また
<util:map map-class="java.util.TreeMap">
<entry key-ref="antenna1" value-ref="locationEventFilteringManager1" />
</util:map>