个性化阅读
专注于IT技术分析

具有非字符串Map(具有从属对象)的构造函数注入示例

点击下载
  1. 具有非字符串映射的构造函数注入

在此示例中, 我们将地图用作具有Answer和User的答案。在这里, 我们将键和值对都用作对象。答案具有自己的信息, 例如answerId, 答案和postedDate, 用户具有自己的信息, 例如userId, 用户名, emailId。

像前面的示例一样, 它是论坛的示例, 其中一个问题可以有多个答案。

Question.java

此类包含三个属性, 两个构造函数和用于显示信息的displayInfo()方法。

package com.srcmini;
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.srcmini;

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+" Answer:"+answer+" Posted Date:"+postedDate;
}
}

User.java

package com.srcmini;

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+" Email Id:"+email;
}
}

applicationContext.xml

entry元素的key-ref和value-ref属性用于定义映射中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.srcmini.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.srcmini.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.srcmini.User">
<constructor-arg value="1"></constructor-arg>
<constructor-arg value="Arun Kumar"></constructor-arg>
<constructor-arg value="arun@gmail.com"></constructor-arg>
</bean>
<bean id="user2" class="com.srcmini.User">
<constructor-arg value="2"></constructor-arg>
<constructor-arg value="Varun Kumar"></constructor-arg>
<constructor-arg value="Varun@gmail.com"></constructor-arg>
</bean>

<bean id="q" class="com.srcmini.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

此类从applicationContext.xml文件获取Bean, 然后调用displayInfo()方法以显示信息。

package com.srcmini;

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

下载此示例(使用MyEclipse IDE开发)

下载此示例(使用Eclipse IDE开发)

赞(0)
未经允许不得转载:srcmini » 具有非字符串Map(具有从属对象)的构造函数注入示例

评论 抢沙发

评论前必须登录!