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

Exemple d'injection de constructeur (avec des objets pertinents)

Dans cet exemple, nous utilisons map En tant que réponse ayant Answer et User. Ici, nous utilisons les paires clé-valeur comme des objets. Les réponses ont leurs propres informations, par exemple answerId, réponse et postedDate, les utilisateurs ont leurs propres informations, par exemple userId, nom d'utilisateur, emailId.

Comme dans l'exemple précédent, c'est un exemple de forum Une question peut avoir plusieurs réponses

Question.java

Cette classe contient trois attributs, deux constructeurs et la méthode displayInfo() utilisée pour afficher des informations.

package com.w3codebox;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class Question {
private int id;
private String name;
private Map<Answer,User> answers;
public Question() {}
public Question(int id, String name, Map<Answer, User> answers) {
    super();
    this.id = id;
    this.name = name;
    this.answers = answers;
}
public void displayInfo(){
    System.out.println("question id:");+id);
    System.out.println("question name:");+name);
    System.out.println("Answers....");
    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("Answer Information:");
        System.out.println(ans);
        System.out.println("Posted By:");
        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(){
    retourner "Id:"+id+" Answer:"+answer+" Posted Date:"+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(){
    retourner "Id:"+id+" Nom:"+nom+" Identifiant Email:"+email;
}
}

applicationContext.xml

entrée élément de clé-ref et valeur-ref Cette propriété est utilisée pour définir les références de bean dans la carte.

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schéma/beans
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
    xmlns:p="http://www.springframework.org/schéma/p
    xsi:schemaLocation="http://www.springframework.org/schéma/beans 
http://www.springframework.org/schéma/beans/spring-beans-3.0.xsd">
<bean id="answer1" class="com.w3codebox.Answer">
<constructeur-arg valeur="1"></constructeur-arg>
<constructeur-arg valeur="Java est un Langage de Programmation"></constructeur-arg>
<constructeur-arg valeur=""12/12/2001></constructeur-arg>
</bean>
<bean id="answer2" class="com.w3codebox.Answer">
<constructeur-arg valeur="2"></constructeur-arg>
<constructeur-arg valeur="Java est une Plateforme"></constructeur-arg>
<constructeur-arg valeur=""12/12/2003></constructeur-arg>
</bean>
<bean id="user1" class="com.w3codebox.User">
<constructeur-arg valeur=""1></constructeur-arg>
<constructeur-arg valeur="Arun Kumar"></constructeur-arg>
<constructeur-arg valeur="[email protected]"></constructeur-arg>
</bean>
<bean id="user2" class="com.w3codebox.User">
<constructeur-arg valeur=""2></constructeur-arg>
<constructeur-arg valeur="Varun Kumar"></constructeur-arg>
<constructeur-arg valeur="[email protected]"></constructeur-arg>
</bean>
<bean id="q" class="com.w3codebox.Question">
<constructeur-arg valeur=""1></constructeur-arg>
<constructeur-arg valeur="Qu'est-ce que Java ?"></constructeur-arg>
<constructeur-arg>
<map>
<entrée clé-ref="answer1" valeur-ref="user1></entrée>
<entrée clé-ref="answer2" valeur-ref="user2></entrée>
</map>
</constructeur-arg>
</bean>
</beans>

Test.java

Cette classe récupère les Bean à partir du fichier applicationContext.xml et appelle la méthode displayInfo() pour afficher les informations.

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