English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Se o conjunto contiver objetos dependentes, você pode usar list , set dentro de ref elementos para injetar essas informações. Ou Map.
Neste exemplo, usamos como exemplo "fórum", onde Um problema pode ter várias respostasMas a Answer possui suas próprias informações, como answerId, answer e postedBy. Neste exemplo, foram usados quatro páginas:
Question.java Answer.java applicationContext.xml Test.java
Neste exemplo, a lista que usamos pode conter elementos repetidos, você pode usar um set que contenha apenas elementos únicos. No entanto, você precisa alterar a lista configurada no arquivo applicationContext.xml e na classe Question.java.
Question.java
Este classe contém três atributos, dois construtores e o método displayInfo() para exibir informações. Aqui, usamos uma lista para conter várias respostas.
package com.w3codebox; import java.util.Iterator; import java.util.List; public class Question { private int id; private String name; private List<Answer> answers; public Question() {} public Question(int id, String name, List<Answer> answers) { super(); this.id = id; this.name = name; this.answers = answers; } public void displayInfo(){ System.out.println(id+" "+name); System.out.println("answers are:"); Iterator<Answer> itr = answers.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Answer.java
Este classe possui três atributos id, name e by, construtor e método toString().
package com.w3codebox; public class Answer { private int id; private String name; private String by; public Answer() {} public Answer(int id, String name, String by) { super(); this.id = id; this.name = name; this.by = by; } public String toString(){ return id+" "+nome+" "+por; } }
applicationContext.xml
ref elemento é usado para definir a referência de outro bean. Aqui, usamos ref do elemento Atributo para especificar a referência de outro bean.
<?xml versão="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/esquema/beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instância xmlns:p="http://www.springframework.org/esquema/p xsi:schemaLocation="http://www.springframework.org/esquema/beans http://www.springframework.org/esquema/beans/spring-beans-3.0.xsd"> <bean id="ans1" class="com.w3codebox.Resposta"> <construtor-arg value="1></construtor-arg> <construtor-arg value="Java é uma linguagem de programação"></construtor-arg> <construtor-arg value="John"></construtor-arg> </bean> <bean id="ans2" class="com.w3codebox.Resposta"> <construtor-arg value="2></construtor-arg> <construtor-arg value="Java é uma Plataforma"></construtor-arg> <construtor-arg value="Ravi"></construtor-arg> </bean> <bean id="q" class="com.w3codebox.Pergunta"> <construtor-arg value="111></construtor-arg> <construtor-arg value="O que é java?"></construtor-arg> <construtor-arg> <lista> <ref bean="ans1"/> <ref bean="ans2"/> </lista> </construtor-arg> </bean> </beans>
Test.java
Esta classe obtém Beans do arquivo applicationContext.xml e chama o método displayInfo.
package com.w3codebox; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class Test { public static void main(String[] args) { Resource r = new ClassPathResource("applicationContext.xml"); BeanFactory factory = new XmlBeanFactory(r); Question q = (Question) factory.getBean("q"); q.displayInfo(); } }