在 Java 语言中,可以使用我们自己的 Comparator类来创建 TreeMap。现在,我想创建其中一个映射并将其分配给我的一个 bean。我也事先知道地图值,我有兴趣让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 map 实用程序,有一些方法可以指定 map 的类,但不能传递构造函数 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>