Java 春季地图发行
我看到下面的错误,它试图将映射注入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] 弹簧配置Java 春季地图发行,java,spring,Java,Spring,我看到下面的错误,它试图将映射注入bean。我不确定Spring是如何推断我尝试注入的映射是org.apache.commons.collections.map.LinkedMap类型的。我如何解决这个问题 [org.apache.commons.collections.map.LinkedMap]到所需类型 [java.util.LinkedHashMap]用于属性“asyncConnectorDaoMap”;嵌套 异常为java.lang.IllegalArgumentException:无
<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>
<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>
下面的代码
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);
}
}
import java.util.LinkedHashMap;
公共类AsyncConnectorFactory{
私有LinkedHashMap asyncConnectorDaoMap;
公共LinkedHashMap getAsyncConnectorDaoMap(){
返回asyncConnectorDaoMap;
}
公共void setAsyncConnectorDaoMap(
LinkedHashMap异步连接器DAOMAP){
this.asyncConnectorDaoMap=asyncConnectorDaoMap;
}
公共AsyncConnectorDao getAsyncConcurrentConnectorDao(字符串服务标识符){
返回asyncConnectorDaoMap.get(serviceIdentifier);
}
}
修改的工作配置
<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>
<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>
您是否尝试先创建地图,然后将其作为参考传递
<util:map id="p:asyncConnectorDaoMap" map-class="java.util.LinkedHashMap">
<entry key="ACCOUNT_MANAGEMENT_CONTROLLER" value-ref="asyncConnectorDao"/>
<entry key="CUSTOMER_SERVICE" value-ref="asynConnectorService"/
</util:map>
<bean id="asyncConnectorDao" class="core.commons.AsyncConnectorDao" />
<bean id="asynConnectorService" class="core.commons.AsyncConnectorService" />
<bean id="fulfillment.management.AsyncConnectorFactory" class="com.service.async.AsyncConnectorFactory">
<property name="asyncConnectorDaoMap" ref="asyncConnectorDaoMap"/>
</bean>
谢谢Koitoer,我定义的方式有什么问题吗?我想问题出在value ref中,似乎你指向的是一个类而不是beanThanks Kotoer,现在可以工作了。我已经粘贴了工作配置。