2016-04-17 19 views
0

我有一個春天的XML文件這樣命名爲「請求細節-upload.xml未能類型[java.util.ArrayList中]的構造函數參數值轉換爲所需的類型[java.util.List中]

<?xml version="1.0" encoding="UTF-8"?> 
<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:c="http://www.springframework.org/schema/c" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd 
    "> 

<import resource="classpath:META-INF/jobs/environment.xml" /> 
<import resource="classpath:META-INF/jobs/clients.xml" /> 
<import resource="classpath:META-INF/jobs/edx/request-details.xml" /> 
<import resource="classpath:META-INF/jobs/dynamoDbClients.xml" /> 

<bean id="requestDetailsFetchAndDecryptDataDao" class="com.amazon.edx.dao.FetchAndDecryptDataDaoDynamoDbImpl" 
c:dataUploadDao-ref="requestDetailsDataUploadDao" 
c:dataTransformer-ref="requestDetailsDataTransformer" 
/> 
<util:list id="requestDetailsKeyItemAttributesMetadata" value-type="com.amazon.edx.manager.ItemAttributesMetaData"> 
     <ref bean="RequestId"/> 
     <ref bean="RequestDate"/> 
</util:list> 

<util:list id="requestDetailsNonKeyItemAttributesMetadata" value-type="com.amazon.edx.manager.ItemAttributesMetaData">   
     <ref bean="CreatedBy"/> 
     <ref bean="UpdatedTime"/>   
</util:list> 

<bean id="RequestId" class="com.amazon.edx.manager.ItemAttributesMetaData" 
    c:itemAttributeName="RequestId" 
/> 

    <bean id="RequestDate" class="com.amazon.edx.manager.ItemAttributesMetaData" 
    c:itemAttributeName="RequestDate" 
/> 

<bean id="CreatedBy" class="com.amazon.edx.manager.ItemAttributesMetaData" 
    c:itemAttributeName="CreatedBy" 
/> 
<bean id="UpdatedTime" class="com.amazon.edx.manager.ItemAttributesMetaData" 
    c:itemAttributeName="UpdatedTime" 
/> 

    <!-- upload manager --> 
    <bean id = "requestDetailsDataUploadManager" class ="com.amazon.edx.manager.DataUploadManagerImpl" 
c:fetchAndDecryptDataDao-ref="requestDetailsFetchAndDecryptDataDao" 
c:keyAttributes-ref="requestDetailsKeyItemAttributesMetadata" 
c:nonKeyAttributes-ref="requestDetailsNonKeyItemAttributesMetadata" 
/> 

<bean id = "requestDetailsUploadToEdx" class = "com.amazon.edx.UploadDataToEdx" 
c:dataUploadManager-ref ="requestDetailsDataUploadManager" 
/> 
</beans> 

和另一個XML命名請求details.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:c="http://www.springframework.org/schema/c" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd 
    "> 

    <bean id="requestDetailsDataUploadDao" class="com.amazon.edx.dao.DataUploadClientImpl" 
c:someName="xxxxxxxxxx" 
c:otherName="yyyyyyyyy"  
    /> 

    <util:list id="requestDetailsColumnMetaData" value-type="com.amazon.edx.transformer.ColumnMetaData"> 
     <ref bean="RequestId"/> 
     <ref bean="RequestDate"/> 
     <ref bean="CreatedBy"/> 
     <ref bean="UpdatedTime"/>    
</util:list> 

    <bean id="RequestId" class="com.amazon.edx.transformer.ColumnMetaData" 
    c:attributeName="RequestId" 
    c:dataType="VARCHAR2" 
    c:columnDisplayName="REQUEST_ID" 
    /> 

    <bean id="RequestDate" class="com.amazon.edx.transformer.ColumnMetaData" 
    c:attributeName="RequestDate" 
    c:dataType="VARCHAR2" 
    c:columnDisplayName="REQUEST_DATE" 
    /> 


    <bean id="CreatedBy" class="com.amazon.edx.transformer.ColumnMetaData" 
    c:attributeName="CreatedBy" 
    c:dataType="VARCHAR2" 
    c:columnDisplayName="CREATED_BY" 
    /> 
    <bean id="UpdatedTime" class="com.amazon.edx.transformer.ColumnMetaData" 
    c:attributeName="UpdatedTime" 
    c:dataType="NUMBER" 
    c:columnDisplayName="UPDATED_TIME" 
    /> 

    <bean id="requestDetailsDataTransformer" class="com.amazon.edx.transformer.DataTransformerImpl" 
    c:dataFlattener-ref="requestDetailsDataFlattener" 
    c:columnMetadata-ref="requestDetailsColumnMetaData" 
    c:delimiter="{tabDelimiter}" 
    /> 

    <util:constant id="tabDelimiter" 
     static-field="com.amazon.edx.transformer.Delimiters.TAB_DELIMITER" /> 

    <bean id="requestDetailsDataFlattener" class="com.amazon.edx.flattener.JsonDataFlattenerImpl" 
     c:multipleRowColumnName="" 
    /> 
    </beans> 

我收到以下錯誤:

Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'requestDetailsDataTransformer' defined in class path resource [META-INF/jobs/edx/request-details.xml]: Unsatisfied dependency expressed through constructor argument with index 1 of type [java.util.List]: Could not convert constructor argument value of type [java.util.ArrayList] to required type [java.util.List]: Failed to convert value of type 'java.util.ArrayList' to required type 'java.util.List'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [com.amazon.edx.manager.ItemAttributesMetaData] to required type [com.amazon.edx.transformer.ColumnMetaData]: no matching editors or conversion strategy found 

它說不能從java.util.ArrayList轉換爲java.util.List。我甚至沒有使用java.util.ArrayList。我對Spring很陌生,不能理解這個錯誤的確切原因。

任何幫助表示讚賞。 謝謝

回答

0

啊......想通了這個問題。兩個文件中列表中存在的bean id存在衝突。即使它們在不同的.xml文件中,Bean ID也應該是唯一的。當我們將一個文件導入其他文件時會有衝突。

相關問題