【发布时间】:2016-03-03 15:55:43
【问题描述】:
我看到以下错误,它试图将地图注入 bean。我不确定 Spring 是如何推断出我尝试注入的地图是 org.apache.commons.collections.map.LinkedMap 类型的。我该如何解决这个问题?
[org.apache.commons.collections.map.LinkedMap] 到所需类型 [java.util.LinkedHashMap] 用于属性“asyncConnectorDaoMap”;嵌套的 异常是 java.lang.IllegalArgumentException:无法转换值 [org.apache.commons.collections.map.LinkedMap] 类型为必需 输入 [java.util.LinkedHashMap]
弹簧配置
<bean id="fulfillment.management.AsyncConnectorFactory" class="com.service.async.AsyncConnectorFactory"> <property name="asyncConnectorDaoMap"> <map key-type="java.lang.String" value-type="com.service.async.AsyncConnectorDao">
<entry key="ACCOUNT_MANAGEMENT_CONTROLLER" value-ref="core.commons.AsyncConnectorDao"></entry>
<entry key="CUSTOMER_SERVICE" value-ref="core.commons.AsyncConnectorDao"></entry>
<entry key="ACCOUNT_SERVICE" value-ref="core.commons.AsyncConnectorDao"></entry>
<entry key="LOCATION_SERVICE" value-ref="core.commons.AsyncConnectorDao"></entry> </map> </property> </bean>
代码如下
import java.util.LinkedHashMap;
public class AsyncConnectorFactory {
private LinkedHashMap<String, AsyncConnectorDao> asyncConnectorDaoMap;
public LinkedHashMap<String, AsyncConnectorDao> getAsyncConnectorDaoMap() {
return asyncConnectorDaoMap;
}
public void setAsyncConnectorDaoMap(
LinkedHashMap<String, AsyncConnectorDao> asyncConnectorDaoMap) {
this.asyncConnectorDaoMap = asyncConnectorDaoMap;
}
public AsyncConnectorDao getAsyncConcurrentConnectorDao(String serviceIdentifier) {
return asyncConnectorDaoMap.get(serviceIdentifier);
}
}
修改后的工作配置
<bean id="fulfillment.management.AsyncConnectorFactory" class="com.service.async.AsyncConnectorFactory">
<property name="asyncConnectorDaoMap" ref="asyncConnectorDaoMap1"/>
</bean>
<util:map id="asyncConnectorDaoMap1" map-class="java.util.LinkedHashMap">
<entry key="ACCOUNT_MANAGEMENT_CONTROLLER" value-ref="core.commons.AsyncConnectorDao"></entry>
<entry key="CUSTOMER_SERVICE" value-ref="core.commons.AsyncConnectorDao"></entry>
<entry key="ACCOUNT_SERVICE" value-ref="core.commons.AsyncConnectorDao"></entry>
<entry key="LOCATION_SERVICE" value-ref="core.commons.AsyncConnectorDao"></entry>
【问题讨论】: