Spring依赖注入

来源:互联网 发布:word中矩阵怎么打 编辑:程序博客网 时间:2024/06/18 07:35
1、使用构造器方法注入2、使用setter方法注入注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。案例1:使用构造器注入新建一个PersonServiceBean.javapublic class PersonServiceBean {private String name;private String sex;private Integer age;private Date birth;public PersonServiceBean() {super();// TODO Auto-generated constructor stubSystem.out.println("构造器初始化对象");}public PersonServiceBean(String name, String sex, Integer age, Date birth) {super();this.name = name;this.sex = sex;this.age = age;this.birth = birth;}public void setName(String name) {System.out.println("name的set方法------------"+name);this.name = name;}public void setSex(String sex) {this.sex = sex;}public void setAge(Integer age) {this.age = age;}public void setBirth(Date birth) {this.birth = birth;}@Overridepublic String toString() {return "PersonServiceBean [name=" + name + ", sex=" + sex + ", age="+ age + ", birth=" + birth + "]";}}新建一个bean.xml文件<bean id="personServiceBean" class="cn.csdn.hr.service.PersonServiceBean"><!--依赖注入的方式构造器注入构造器有四个参数,如果写三个参数会有错且这四个参数的顺序必须正确--><constructor-arg index="0"><value>老王</value></constructor-arg><constructor-arg index="1"><value>女</value></constructor-arg><constructor-arg index="2"><value>23</value></constructor-arg><constructor-arg index="3"><bean class="java.util.Date"></bean></constructor-arg></bean>或者<!-- 根据类型匹配,类型相同时再按顺序匹配 --><bean id="personServiceBean" class="cn.csdn.hr.service.PersonServiceBean"><constructor-arg type="java.lang.String" value="小小"></constructor-arg><constructor-arg type="java.lang.String" value="女"></constructor-arg><constructor-arg type="java.lang.Integer" value="12"></constructor-arg><constructor-arg type="java.util.Date" ref="date"></constructor-arg></bean><bean id="date" class="java.util.Date"></bean>测试方法:@Testpublic void test() {//第一步:获取应用程序上下文对象ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:benas.xml");//第二步:根据应用程序上下文对象的getBean(id名称)方法获取实例bean对象PersonServiceBean p=(PersonServiceBean) ac.getBean("personServiceBean");System.out.println(p.toString());}案例2:使用setter方法注入新建一个TeacherServiceBean.java通过set注入必须有默认构造器,这个案例是集合的注入private String name;private String sex;private Integer age;private Date birth;public PersonServiceBean() {super();System.out.println("构造器初始化对象");}public PersonServiceBean(String name, String sex, Integer age, Date birth) {super();this.name = name;this.sex = sex;this.age = age;this.birth = birth;}public void setName(String name) {System.out.println("name的set方法------------"+name);this.name = name;}public void setSex(String sex) {this.sex = sex;}public void setAge(Integer age) {this.age = age;}public void setBirth(Date birth) {this.birth = birth;}@Overridepublic String toString() {return "PersonServiceBean [name=" + name + ", sex=" + sex + ", age="+ age + ", birth=" + birth + "]";}新建一个beanTeacher.xml文件<bean id="teacherBean" class="cn.csdn.hr.service.TeacherBean"><!-- list集合的注入 --><property name="list"><list><value>惠普电脑</value><value>联想电脑</value><value>宏基电脑</value></list></property><!-- set集合的注入 --><property name="set"><set><value>计算机技术与编程</value><value>c++</value><value>java</value></set></property><!-- map集合的注入 --><property name="map"><map><entry><key><value>0x001</value></key><value>java编程与开发</value></entry><entry><key><value>0x002</value></key><value>jsp编程与开发</value></entry><entry><key><value>0x003</value></key><value>php编程与开发</value></entry></map></property><property name="prop"><props><prop key="0x00001">海南</prop><prop key="0x00002">河南</prop><prop key="0x00003">河北</prop></props></property></bean>测试方法@Testpublic void test1() {//第一步:获取应用程序上下文对象ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:beanTeacher.xml");//第二步:根据应用程序上下文对象的getBean(id名称)方法获取实例bean对象TeacherBean t=(TeacherBean) ac.getBean("teacherBean");System.out.println("set注入list-----------------------------------------------------");List<String> list=t.getList();for(String str:list){System.out.println(str);}System.out.println("set注入set-----------------------------------------------------");Set<String> set=t.getSet();for(String str:set){System.out.println(str);}System.out.println("set注入map----------------------------------------------------");Map<String,String> map=t.getMap();Set<Entry<String,String>> en=map.entrySet();for(Entry ent:en){System.out.println(ent.getKey()+"===================="+ent.getValue());}System.out.println("set注入prop---------------------------------------------------");Properties prop=t.getProp();Set<Entry<Object, Object>> en1=prop.entrySet();for(Entry ent:en1){System.out.println(ent.getKey()+"===================="+ent.getValue());}}