首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

感受spring(六)-depends-on及parent

2012-08-31 
体验spring(六)---depends-on及parentdepend-on、延迟初始化Bean、 Bean定义的继承depend-on案例:StudentSer

体验spring(六)---depends-on及parent

depend-on、延迟初始化Bean、 Bean定义的继承

depend-on

案例:StudentServiceImpl.javapublic class StudentServiceImpl {/**默认构造器*/public StudentServiceImpl() {System.out.println("studnetService初始化完成...");}}public class TeacherServiceImpl {/**默认构造器*/public TeacherServiceImpl() {System.out.println("teacherservice初始化完毕...");}}dependson.xml<?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"><!--1、depends-on 在初始化teacherServiceImpl之前进行初始化depends-on的属性值匹配的bean2、你也可以吧teacherServiceImpl所以依赖的bean都放在teacherService之前并且scope是singleton模式即可备注: 只使用第一种方式即可。--><bean id="studentServiceImpl" scope=" singleton "/> <bean id="teacherServiceImpl"  scope="singleton" />   </beans>运行结果:studnetService初始化完成...teacherservice初始化完毕...注意的问题:1.若teacherServiceImpl的bean在前 作用域为scope=’singleton’     studentServiceImpl的bean在后 作用域也为scope=’singleton’则运行结果为:teacherservice初始化完毕...studnetService初始化完成...2. 若teacherServiceImpl的bean在前 作用域为scope=’singleton’ 并且在其中添加depends-on=’ studentServiceImpl’     studentServiceImpl的bean在后 作用域也为scope=’singleton’则运行结果为:studnetService初始化完成...teacherservice初始化完毕...3.若studentServiceImpl的bean在前 并且其作用域改为scope=’prototype’  则运行结果为:teacherservice初始化完毕...4.若studentServiceImpl的bean在前其作用域仍为scope=’prototype’而在teacherServiceImpl的bean中添加depends-on=’ studentServiceImpl’ 其作用域为scope=’singleton’ 则运行结果为:studnetService初始化完成...teacherservice初始化完毕...可依据上述结果相互比较来理解depend-on的使用方法

?

Bean定义的继承

案例:EmpServiceImpl.javapublic class EmpServiceImpl {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}HourEmpServiceImpl.javapublic class HourEmpServiceImpl extends EmpServiceImpl{ private Integer hours;public void setHours(Integer hours) {this.hours = hours;}}RegularEmpServiceImpl.javapublic class RegularEmpServiceImpl extends EmpServiceImpl {private String title;public void setTitle(String title) {this.title = title;}}parent.xml<?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="empServiceImpl" ><property name="name" ><value >dxl</value></property></bean>      <!--继承了empServiceImpl中的name属性的setName()方法--><bean id="hourEmpServiceImpl"   parent="empServiceImpl"><property name="hours"><value>20</value></property></bean><bean id="regularEmpServiceImpl" parent="empServiceImpl"><property name="name"><value>xiaoli</value></property><property name="title"><value>大二学生</value></property></bean></beans>HourEmpServiceImpl.java类与RegularEmpServiceImpl.java类继承了EmpServiceImpl.java类 运行hourEmpServiceImpl可以或得empServiceImpl类中 的name属性也有自己的hours属性;运行RegularEmpServiceImpl可以或得自己的属性即name=’xiaoli’ title=’大二学生’ 继承的父类中的name属性将被自己的name属性覆盖。

?

延迟初始化Bean在体验spring(三)中已有补充

?

?

热点排行