English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Si la colección tiene objetos dependientes, se puede usar list , set en elemento elementos para inyectar esta información. O Map
En este ejemplo, tomamos como ejemplo "foro", donde Un problema puede tener múltiples respuestasPero Answer tiene su propia información, como answerId, answer y postedBy. En este ejemplo se utilizan cuatro páginas:
Question.java Answer.java applicationContext.xml Test.java
En este ejemplo, la lista que utilizamos puede contener elementos repetidos, puede usar un set que solo contenga elementos únicos. Pero, necesitas cambiar la lista configurada en el archivo applicationContext.xml y la lista configurada en el archivo Question.java.
Question.java
Este clase contiene tres atributos, dos constructores y el método displayInfo() para mostrar información. Aquí, utilizamos una lista para contener múltiples respuestas.
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
Esta clase tiene tres propiedades id, name y by, constructor y 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(){ devolver id+" "+nombre+" "+por; } }
applicationContext.xml
elemento ref se utiliza para definir una referencia a otro bean. Aquí, utilizamos elemento de elemento Propiedades para especificar una referencia a otro bean.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/esquema/beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instancia 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.Respuesta"> <constructor-arg value="1></constructor-arg> <constructor-arg value="Java es un lenguaje de programación"></constructor-arg> <constructor-arg value="John"></constructor-arg> </bean> <bean id="ans2" class="com.w3codebox.Respuesta"> <constructor-arg value="2></constructor-arg> <constructor-arg value="Java es una Plataforma"></constructor-arg> <constructor-arg value="Ravi"></constructor-arg> </bean> <bean id="q" class="com.w3codebox.Pregunta"> <constructor-arg value="111></constructor-arg> <constructor-arg value="What is java?"></constructor-arg> <constructor-arg> <lista> <ref bean="ans1"/> <ref bean="ans2"/> </lista> </constructor-arg> </bean> </beans>
Test.java
Esta clase obtiene el Bean desde el archivo applicationContext.xml y llama al 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(); } }