使用bean在JavaSpring中进行集合合并
我不熟悉Spring框架。我正在尝试使用Spring合并两个集合。 Beans.xml使用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> <
<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