《JavaEE框架技术》课件05Spring框架基础-控制反转_第1页
《JavaEE框架技术》课件05Spring框架基础-控制反转_第2页
《JavaEE框架技术》课件05Spring框架基础-控制反转_第3页
《JavaEE框架技术》课件05Spring框架基础-控制反转_第4页
《JavaEE框架技术》课件05Spring框架基础-控制反转_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第6章Spring框架基础

之控制反转框架程序设计(Java)26.0学习目标理解控制反转1多种依赖注入方式2各种类型的属性注入3软件工程系本科课件框架程序设计java36.1理解控制反转控制反转(IoC:InversionofControl)是轻量级Spring框架的核心也可以称为依赖注入(DI:DependencyInjection)控制反转和依赖注入只是从不同的角度描述同一件事情,两者都是通过Spring容器来实现的控制反转可以理解为创建对象的过程交给了Spring容器,而不是我们通过new的方式来创建,控制权反转依赖注入解除了两个对象间的强依赖关系,我们可以将一个对象注入到另外一个对象软件工程系本科课件框架程序设计java46.1理解控制反转控制反转的运行机理【理解】上节课我们从Spring容器中获取bean之前,首先要初始化我们容器的上下文ApplicationContext,如下:ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");软件工程系本科课件框架程序设计java56.1理解控制反转控制反转的运行机理【理解】applicationContext.xml内容,如下:<beans><beanid="userService"class="service.UserService"> <propertyname="name"> <value>张三</value> </property></bean></beans>软件工程系本科课件框架程序设计java66.1理解控制反转在初始化容器上下文的过程中,发生了如下逻辑:1、Spring加载配置文件applicationContext.xml2、当读取到配置文件中的bean标签时,会根据指定的class通过反射的方式创建对象保存到内存中,如下

Classbean=Class.forName(“全类名”);

Objectobj=bean.newInstance();3、当读取到bean标签中的property属性时,通过反射的方式调用指定name属性的set方法,将value值注入进去,如下:

Methodmethod=bean.getMethod(attributename,

String.class); method.invoke(obj,value);软件工程系本科课件框架程序设计java76.2多种依赖注入方式三种依赖注入方式

接口注入【不常用】setter注入

通过反射调用属性的set方法注入到bean中构造方法注入

通过反射调用bean类的构造方法完成注入软件工程系本科课件框架程序设计java86.2多种依赖注入方式例1:在JavaProject中的domain包下,有一个雇员类(Employee),如下:publicclassEmployee{ privateStringname; privateintage; privateStringsex;

//省略get/set方法}要求:将该类配置到Spring容器中,并初始化三个属性(name:张三,age:25,sex:男)软件工程系本科课件框架程序设计java96.2多种依赖注入方式-setter注入setter注入配置如下:<beanid="employee"class="domain.Employee"> <property

name="name"value="张三"></property> <propertyname="age"value="25"></property> <propertyname="sex"value="男"></property></bean>说明:1、property标签的含义是name指定的属性通过setter方法注入,name指定被注入的属性名称,value为注入的具体的值2、property标签中值的注入也可以用如下形式:<propertyname="name">

<value>张三</value> </property>软件工程系本科课件框架程序设计java106.2多种依赖注入方式-构造方法注入构造方法注入配置如下:1、首先在Employee中定义一个构造方法,如下:publicclassEmployee{ privateStringname; privateintage; privateStringsex;

publicEmployee(Stringname,intage,Stringsex){ =name; this.age=age; this.sex=sex; }}软件工程系本科课件框架程序设计java116.2多种依赖注入方式-构造方法注入构造方法注入配置如下:2、修改bean的配置如下,如下:<beanid="employee"class="domain.Employee"> <constructor-argindex="0"value="张三"></constructor-arg> <constructor-argindex="1"value="25"></constructor-arg> <constructor-argindex="2"value="男"></constructor-arg></bean>说明:1、constructor-arg标签的含义是指通过构造方法中的参数注入值,index指构造方法中参数的序号,value指注入的值。2、constructor-arg标签中值的注入也可以使用如下形式:<constructor-argindex="0">

<value>张三</value> </constructor-arg>软件工程系本科课件框架程序设计java126.3各种类型的属性注入我们以前演示的属性注入,所有属性都是基本数据类型的,属性的注入如下所示:<propertyname="name">

<value>张三</value> </property>在大多数情况下,属性的类型也有可能是实体类或者是一个集合,那么实体类属性或者集合属性如何注入呢?软件工程系本科课件框架程序设计java136.3各种类型的属性注入-实体类属性例2:以前在讲mybatis多对一查询的时候,一个雇员类中包含了一部门类的引用部门类如下所示:publicclassDepartment{ privateStringdeptid; privateStringdeptname;

//省略get/set方法}软件工程系本科课件框架程序设计java146.3各种类型的属性注入-实体类属性雇员类如下所示:publicclassEmployee{ privateStringname; privateintage; privateStringsex; privateDepartmentdept;//所属部门

//省略get/set方法}要求:1、将Employee类配置到Spring容器中,并初始化三个属性(name:张三,age:25,sex:男)2、初始化该雇员的部门(deptid:001,deptname:开发部)软件工程系本科课件框架程序设计java156.3各种类型的属性注入-实体类属性第1个题目是基本数据类型值的注入,省略第2个题目是将一个部门对象注入到雇员对象的部门属性中1、首先在spring中配置一个部门对象bean,如下所示:<beanid="dept"class="domain.Department"><propertyname="deptid"value="001"></property><propertyname="deptname"value="开发部"></property></bean>软件工程系本科课件框架程序设计java166.3各种类型的属性注入-实体类属性2、然后在spring中配置一个雇员对象bean,如下所示:<beanid="employee2"class="domain.Employee"> <propertyname="name"value="张三"></property> <propertyname="age"value="25"></property> <propertyname="sex"value="男"></property> <propertyname="dept"ref="dept"></property></bean>说明:1、将一个bean注入到另外一个bean的属性中使用ref属性软件工程系本科课件框架程序设计java176.3各种类型的属性注入-实体类属性例3:以前在讲mybatis一对多查询的时候,一个部门类包含一个雇员的集合部门类如下所示:publicclassDepartment{ privateStringdeptid; privateStringdeptname;

privateList<Employee>employees;

//省略get/set方法}软件工程系本科课件框架程序设计java186.3各种类型的属性注入-实体类属性雇员类如下所示:publicclassEmployee{ privateStringname; privateintage; privateStringsex;

//省略get/set方法}要求:1、将Department类配置到Spring容器中,并初始化两个属性(deptid:001,deptname:开发部)2、初始化该部门employees属性,向集合中加入两个雇员(张三:25:男,李四:24:女)软件工程系本科课件框架程序设计java196.3各种类型的属性注入-集合属性第1个题目是基本数据类型值的注入,省略第2个题目是将两个雇员对象注入到部门对象的集合属性中1、首先在spring中配置两个雇员对象bean,如下所示:<beanid="employee1"class="domain.Employee"> <propertyname="name"value="张三"></property> <propertyname="age"value="25"></property> <propertyname="sex"value="男"></property></bean><beanid="employee2"class="domain.Employee"> <propertyname="name"value="李四"></property> <propertyname="age"value="24></property> <propertyname="sex"value="女"></property></bean>软件工程系本科课件框架程序设计java206.3各种类型的属性注入-集合属性2、然后在spring中配置一个部门对象bean,如下所示:<beanid="dept"class="domain.Department"> <propertyname="deptid"value="001"></property> <propertyname="deptname"value="开发部"></property> <propertyname="employees">

<list> <refbean="employee1"/> <refbean="employee2"/> </list> </propert

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论