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

Beispiel mit Setter-Injektion für nicht-stringbasierte Mapping

In diesem Beispiel verwenden wir map als Antwort mit Answer und Benutzer. Hier verwenden wir sowohl Schlüssel als auch Wertpaare als Objekte. Die Antwort hat ihre eigenen Informationen, z.B. answerId, Antwort und postedDate, der Benutzer hat seine eigenen Informationen, z.B. userId, Benutzername, emailId.

Wie im obigen Beispiel ist es ein Beispiel für ein Forum, das Eine Frage kann mehrere Antworten haben

Question.java

Diese Klasse enthält drei Eigenschaften, nämlich Getter- und Setter-Methode und die displayInfo()-Methode, um Informationen anzuzeigen

package com.w3codebox;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class Frage {
private int id;
private String name;
private Map<Antwort, Benutzer> antworten;
//Getter und Setter
public void displayInfo(){
    System.out.println("Frage ID:")+;
    System.out.println("Frage Name:")+name);
    System.out.println("Antworten....");
    Set<Entry<Answer, User>> set = answers.entrySet();
    Iterator<Entry<Answer, User>> itr = set.iterator();
    while(itr.hasNext()) {
        Entry<Answer, User> entry = itr.next();
        Answer ans = entry.getKey();
        User user = entry.getValue();
        System.out.println("Antwort-Information:");
        System.out.println(ans);
        System.out.println("Eingestellt von:");
        System.out.println(user);
    }
}
}

Answer.java

package com.w3codebox;
import java.util.Date;
public class Answer {
private int id;
private String answer;
private Date postedDate;
public Answer() {}
public Answer(int id, String answer, Date postedDate) {
    super();
    this.id = id;
    this.answer = answer;
    this.postedDate = postedDate;
}
public String toString() {
    return "Id:"+id+"Antwort:"+Antwort+"Eingestellt am:"+postedDate;
}
}

User.java

package com.w3codebox;
public class User {
private int id;
private String name, email;
public User() {}
public User(int id, String name, String email) {
    super();
    this.id = id;
    this.name = name;
    this.email = email;
}
public String toString() {
    return "Id:"+id+"Name:"+Name+"E-Mail-ID:"+email;
}
}

applicationContext.xml

Eintrag Elements des key-ref und value-ref Die Eigenschaft wird verwendet, um Referenzen auf Beans in der Map zu definieren.

<?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="answer" value="Java ist eine Programmiersprache"></property>
<property name="postedDate" value="12/12/2001></property>
</bean>
<bean id="answer2" class="com.w3codebox.Answer">
<property name="id" value="2></property>
<property name="answer" value="Java ist eine Plattform"></property>
<property name="postedDate" value="12/12/2003></property>
</bean>
<bean id="user1" class="com.w3codebox.User">
<property name="id" value="1></property>
<property name="name" value="Arun Kumar"></property>
<property name="email" value="[email protected]"></property>
</bean>
<bean id="user2" class="com.w3codebox.User">
<property name="id" value="2></property>
<property name="name" value="Varun Kumar"></property>
<property name="email" value="[email protected]"></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">
<map>
<entry key-ref="answer1" value-ref="user1></entry>
<entry key-ref="answer2" value-ref="user2></entry>
</map>
</property>
</bean>
</beans>

Test.java

DieseKlasseholtBeansausderDateiapplicationContext.xmlundruftdieMethodedisplayInfo()auf,umInformationenanzuzeigen.

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