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

Beispiel für Setter-Injektion (mit dem entsprechenden Objekt)

Wenn die Sammlung abhängige Objekte enthält, kann die Setter-Injektion (mit dem entsprechenden Objekt) verwendet werden list , set in Element -Elemente verwenden, um diese Informationen zu injizieren. Oder Map. Hier werden wir die property innerhalb der Elemente werden Liste, Set oder Map-Elemente verwendet.

In diesem Beispiel verwenden wir das Forum als Beispiel, wo Ein Problem kann mehrere Antworten haben. Aber Answer hat seine eigenen Informationen, wie z.B. answerId, answer und postedBy. In diesem Beispiel werden vier Seiten verwendet:

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

In diesem Beispiel kann die Liste, die wir verwenden, wiederholte Elemente enthalten. Sie können eine Set verwenden, die nur einzigartige Elemente enthält. Sie müssen jedoch die Liste in applicationContext.xml und die Liste in der Datei Question.java ändern.

Question.java

Diese Klasse enthält drei Attribute, zwei Konstruktoren und die displayInfo()-Methode zur Anzeige von Informationen. Hier verwenden wir eine Liste, um mehrere Antworten zu speichern.

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 und 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

Diese Klasse hat drei Eigenschaften id, name und by sowie den Konstruktor und die Methode toString().

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

applicationContext.xml

Element wird verwendet, um eine Referenz auf einen anderen Bean zu definieren. Hier verwenden wir Element des Elements Element Eigenschaft, um eine Referenz auf einen anderen Bean zu spezifizieren.

<?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 ist eine Programmiersprache"></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 ist eine Plattform"></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="Was ist Java?"></property>
<property name="answers">
<list>
<ref bean="answer1"/>
<ref bean="answer2"/>
</list>
</property>
</bean>
</beans>

Test.java

Diese Klasse ruft den Bean aus der Datei applicationContext.xml ab und ruft die displayInfo-Methode auf.

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();
    
}
}