English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Se o conjunto contiver objetos dependentes, você pode usar list , set no ref elementos para injetar essas informações. Ou MapAqui, vamos usar property os elementos internos usam listas, conjuntos ou mapas.
Neste exemplo, usamos como exemplo um fórum, onde Um problema pode ter várias respostasAnswer 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 usada pode conter elementos repetidos, você pode usar um conjunto que contenha apenas elementos únicos. No entanto, você precisa alterar a lista configurada no arquivo applicationContext.xml e a lista configurada no arquivo Question.java.
Question.java
Este objeto possui 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; //setters and getters 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
此类具有三个属性id,name和by构造函数和toString()方法。
package com.w3codebox; public class Answer { private int id; private String name; private String by; //setters and getters public String toString(){ return id+" ""+name+" ""+by; } }
applicationContext.xml
ref 元素用于定义另一个bean的引用。在这里,我们使用 ref 元素的 bean 属性来指定另一个bean的引用。
<?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:p="http://www.springframework.org/schema/p xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="answer1" class="com.w3codebox.Answer"> <property name="id" value="1></property> <property name="name" value="Java is a programming language"></property> <property name="by" value="Ravi Malik"></property> </bean> <bean id="answer2" class="com.w3codebox.Answer"> <property name="id" value="2></property> <property name="name" value="Java is a platform"></property> <property name="by" value="Sachin"></property> </bean> <bean id="q" class="com.w3codebox.Question"> <property name="id" value="1></property> <property name="name" value="What is Java?"></property> <property name="answers"> <list> <ref bean="answer1"/> <ref bean="answer2"/> </list> </property> </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(); } }