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

Ejemplo de inyección de constructor (con objetos relacionados)

En este ejemplo, utilizamos map Como respuesta, tiene su propia información, como answerId, respuesta y postedDate, y el usuario tiene su propia información, como userId, nombre de usuario, emailId.

Como en el ejemplo anterior, es un ejemplo de foro, entre otros Un problema puede tener múltiples respuestas

Question.java

Este clase contiene tres atributos, dos constructores y el método displayInfo() para mostrar información.

paquete 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("id de pregunta:");+id);
    System.out.println("nombre de pregunta:");+name);
    System.out.println("Respuestas....");
    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("Información de Respuesta:");
        System.out.println(ans);
        System.out.println("Publicado Por:");
        System.out.println(user);
    }
}
}

Answer.java

paquete 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(){
    devolver "Id:"+id+" Respuesta:"+answer+" Fecha Publicada:"+postedDate;
}
}

User.java

paquete 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(){
    devolver "Id:"+id+" Nombre:"+name+" Identificación de correo electrónico:"+email;
}
}

applicationContext.xml

entrada elemento del key-ref y value-ref El atributo se utiliza para definir referencias a beans en el mapa.

<?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">
<constructor-arg value="1"></constructor-arg>
<constructor-arg value="Java is a Programming Language"></constructor-arg>
<constructor-arg value="12/12/2001></constructor-arg>
</bean>
<bean id="answer2" class="com.w3codebox.Answer">
<constructor-arg value="2"></constructor-arg>
<constructor-arg value="Java is a Platform"></constructor-arg>
<constructor-arg value="12/12/2003></constructor-arg>
</bean>
<bean id="user1" class="com.w3codebox.User">
<constructor-arg value="1></constructor-arg>
<constructor-arg value="Arun Kumar"></constructor-arg>
<constructor-arg value="[email protected]"></constructor-arg>
</bean>
<bean id="user2" class="com.w3codebox.User">
<constructor-arg value="2></constructor-arg>
<constructor-arg value="Varun Kumar"></constructor-arg>
<constructor-arg value="[email protected]"></constructor-arg>
</bean>
<bean id="q" class="com.w3codebox.Question">
<constructor-arg value="1></constructor-arg>
<constructor-arg value="What is Java?"></constructor-arg>
<constructor-arg>
<map>
<entry key-ref="answer1" value-ref="user1></entry>
<entry key-ref="answer2" value-ref="user2></entry>
</map>
</constructor-arg>
</bean>
</beans>

Test.java

Esta clase obtiene el Bean del archivo applicationContext.xml y llama al método displayInfo() para mostrar información.

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