(6) Spring 如何装配 集合类 以及 【第二种 依赖注入 方式】使用 构造器 注入

来源:互联网 发布:精灵王座网络公映 编辑:程序博客网 时间:2024/05/22 23:28
package cn.itm.service.impl;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;import cn.itm.service.PersonService;public class PersonServiceBean implements PersonService{private Set<String> sets = new HashSet<String>();private List<String> lists = new ArrayList<String>();private Properties properties = new Properties();private Map<String, String> maps = new HashMap<String, String>();public Map<String, String> getMaps() {return maps;}public void setMaps(Map<String, String> maps) {this.maps = maps;}public Properties getProperties() {return properties;}public void setProperties(Properties properties) {this.properties = properties;}public List<String> getLists() {return lists;}public void setLists(List<String> lists) {this.lists = lists;}public Set<String> getSets() {return sets;}public void setSets(Set<String> sets) {this.sets = sets;}}



import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;public interface PersonService {public Set<String> getSets();public List<String> getLists();public Properties getProperties();public Map<String, String> getMaps() ;}

配置 Spring容器:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">                      <bean id="personService" class="cn.itm.service.impl.PersonServiceBean">                      <property name="sets">           <set>           <value>第一个</value>           <value>第二个</value>           <value>第三个</value>           </set>           </property>                      <property name="lists">           <list>           <value>第一个list</value>           <value>第二个list</value>           <value>第三个list</value>           </list>           </property>                      <property name="properties">           <props>           <prop key="key1">value1</prop>           <prop key="key2">value2</prop>           <prop key="key3">value3</prop>           </props>           </property>                      <property name="maps">           <map>           <entry key="key1" value="value1"/>           <entry key="key2" value="value2"/>           <entry key="key3" value="value3"/>           </map>           </property>                                 </bean>   </beans>

测试类:

package junit.test;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.itm.service.PersonService;public class SpringTest {@BeforeClasspublic static void setUpBeforeClass() throws Exception {}// 专门用来实例化  Spring 容器的。@Test public void instanceSpring(){ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");PersonService personService = (PersonService) ctx.getBean("personService");for(String value: personService.getSets()){System.out.println(value);}System.out.println("-------------------------------");for(String value: personService.getLists()){System.out.println(value);}System.out.println("-------------Properties()------------------");for(Object key: personService.getProperties().keySet()){System.out.println(key + "=" + personService.getProperties().getProperty((String)key));}System.out.println("-------------map------------------");for(Object key: personService.getMaps().keySet()){System.out.println(key + "=" + personService.getMaps().get(key));}}}


二:使用  使用构造器注入


package cn.itm.service.impl;import cn.itm.dao.PersonDao;import cn.itm.service.PersonService;public class PersonServiceBean implements PersonService{private PersonDao personDao;private String name;public PersonServiceBean(PersonDao personDao, String name) {this.personDao = personDao;this.name = name;}public PersonDao getPersonDao() {return personDao;}public void setPersonDao(PersonDao personDao) {this.personDao = personDao;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void save(){personDao.add();System.out.println(name);}}


package cn.itm.service;public interface PersonService {public void save();}

package cn.itm.dao.impl;import cn.itm.dao.PersonDao;public class PersonDaoBean implements PersonDao {public void add(){System.out.println("执行PersonDaoBean的add方法。。。");}}

package cn.itm.dao;public interface PersonDao {public abstract void add();}


配置文件:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">                      <bean id="personDao" class="cn.itm.dao.impl.PersonDaoBean"></bean>           <bean id="personService" class="cn.itm.service.impl.PersonServiceBean">                      <constructor-arg index="0" type="cn.itm.dao.PersonDao" ref="personDao"/>           <constructor-arg index="1" value="大家好。"></constructor-arg>           </bean>   </beans>

测试类:

package junit.test;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.itm.service.PersonService;public class SpringTest {@BeforeClasspublic static void setUpBeforeClass() throws Exception {}// 专门用来实例化  Spring 容器的。@Test public void instanceSpring(){ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");PersonService personService = (PersonService) ctx.getBean("personService");personService.save();}}



打印结果: