English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

iniezione di setter (con oggetto correlato) esempio

Se la collezione contiene oggetti dipendenti, puoi utilizzare list , set nelle ref per iniettare queste informazioni. O Map. In questo caso, utilizzeremo l'elemento property all'interno dell'elemento viene utilizzato l'elemento list, set o map.

In questo esempio, prendiamo ad esempio un forum, dove Un problema può avere più risposteMa Answer ha le proprie informazioni, come answerId, answer e postedBy. In questo esempio sono state utilizzate quattro pagine:

Question.java Answer.java applicationContext.xml Test.java

In questo esempio, la lista che utilizziamo può contenere elementi duplicati, puoi utilizzare un set che contiene solo elementi unici. Tuttavia, devi modificare la lista impostata nel file applicationContext.xml e la lista impostata nel file Question.java.

Question.java

Questa classe contiene tre attributi, due costruttori e il metodo displayInfo() per visualizzare le informazioni. In questo esempio, utilizziamo una lista per contenere più risposte.

package com.w3codebox;
import java.util.Iterator;
import java.util.List;
public class Question {
private int id;
private String name;
private List<Answer> answers;
//setter e getter
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

Questa classe ha tre attributi id, name e by, il costruttore e il metodo toString().

package com.w3codebox;
public class Answer {
private int id;
private String name;
private String by;
//setter e getter
public String toString() {
    return id + " " + name + " " + by;
{}
{}

applicationContext.xml

ref L'elemento viene utilizzato per definire un riferimento a un altro bean. In questo caso, utilizziamo ref di elemento Proprietà per specificare il riferimento a un altro 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 è un linguaggio di programmazione"></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 è una piattaforma"></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="Cosa è Java?"></property>
<property name="answers">
<list>
<ref bean="answer1"/>
<ref bean="answer2"/>
</list>
</property>
</bean>
</beans>

Test.java

此类从 applicationContext.xml 文件获取 Bean 并调用 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();
    
{}
{}