使用bean在JavaSpring中进行集合合并

使用bean在JavaSpring中进行集合合并,java,xml,spring,spring-mvc,javabeans,Java,Xml,Spring,Spring Mvc,Javabeans,我不熟悉Spring框架。我正在尝试使用Spring合并两个集合。 Beans.xml <bean name = "mainAccount" class="java.util.HashSet"> <constructor-arg> <set> <value>123</value> <value>1234</value> <

我不熟悉Spring框架。我正在尝试使用Spring合并两个集合。 Beans.xml

<bean name = "mainAccount" class="java.util.HashSet">
    <constructor-arg>
        <set>
            <value>123</value>
            <value>1234</value>
        </set>
    </constructor-arg>
</bean> 

<bean name = "subAccount" class="java.util.HashSet" parent="mainAccount">
    <constructor-arg> 
        <set merge="true"> 
            <value>231</value>
            <value>23221</value>
        </set>
    </constructor-arg>
</bean>     
<bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
   <constructor-arg name="AccountIDs" ref="subAccount" />
</bean>

123
1234
231
23221
我无法将集合合并到子帐户集合中。 我得到一个例外:-

相关原因: org.springframework.beans.factory.UnsatifiedPendencyException:创建名为“subAccount”的bean时出错,该bean在类路径资源[beans.xml]中定义:通过索引为[int]类型的0的构造函数参数表示未满足的依赖关系:无法将[java.util.LinkedHashSet]类型的构造函数参数值转换为所需的[int]类型:未能将“java.util.LinkedHashSet”类型的值转换为所需的类型“int”;嵌套异常为java.lang.IllegalArgumentException:无法将类型为[java.util.LinkedHashSet]的值转换为所需类型[int]:PropertyEditor[org.springframework.beans.propertyeditors.CustomNumberEditor]返回了类型为[java.util.LinkedHashSet]的不正确值

我的HelloWorld.java是:-

package com.tutorialspoint;
import java.util.HashSet;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;

public class HelloWorld {
  private final Set<String>AccountIDs;

  public HelloWorld(Collection<String> AccountIDs){
    this.AccountIDs = new HashSet<String>(AccountIDs);  
    Iterator iterator = AccountIDs.iterator();
    while (iterator.hasNext())
      System.out.print( iterator.next() + ", " );
      System.out.println();
   }
}
package com.tutorialspoint;
导入java.util.HashSet;
导入java.util.Collection;
导入java.util.Iterator;
导入java.util.Set;
公共类HelloWorld{
私人最终账户ID;
公共HelloWorld(集合帐户ID){
this.AccountIDs=新哈希集(AccountIDs);
迭代器迭代器=AccountIDs.Iterator();
while(iterator.hasNext())
System.out.print(iterator.next()+“,”);
System.out.println();
}
}

当我传递父bean集合“maincount”时,它会正确显示集合值,但当我尝试传递子bean“subAccount”时,我得到了错误。我想将maincount合并到subAccount。我尝试了所有可能的方法,但无法解决此问题。一些指导可能会有所帮助。

我看到的问题是,您尝试合并集合的方式。您正在创建集合的实例,并希望在构建集合的过程中发生合并

spring合并的工作原理是,您必须使用集合属性(比如Set)和属性名(比如mySet)定义自己的bean(父bean),然后您可以使用相同的属性名定义子bean,并将集合的merge属性声明为true。此时spring将了解要将哪些集合与哪些集合合并

您可以按照下面的URL查看它是如何完成的


更新了Beans.Xml。我必须添加索引

<bean name = "mainAccount" class="java.util.HashSet">
  <constructor-arg index="0">
    <set>
        <value>123</value>
        <value>1234</value>
    </set>
  </constructor-arg>
</bean> 

<bean name = "subAccount" class="java.util.HashSet" parent="mainAccount">
  <constructor-arg index="0"> 
    <set merge="true"> 
        <value>231</value>
        <value>23221</value>
    </set>
  </constructor-arg>
</bean>     
<bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
  <constructor-arg name="AccountIDs" ref="subAccount" />
 </bean>

123
1234
231
23221