Java 春季地图发行

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。我不确定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>
    <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,现在可以工作了。我已经粘贴了工作配置。