版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
互联网服务器端开发技术Spring第三章iuap数字化技术丛书01Spring框架介绍SQL概述01一、Spring概念Spring的核心是一个轻量级的容器,是实现IoC容器和非入侵性的框架,提供了AOP概念的实现方式,以及对持久层、事务的支持;并通过提供MVCWeb框架实现了一些常用的企业服务模型封装(API),另外,还提供了对现存的各种框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。它的核心理念是控制反转(InversionofControl,IoC)和面向切面编程(AspectOrientedProgramming,AOP),其主要目的是通过分离项目组件之间的依赖关系简化企业开发。Spring将控制权由应用转移到外部容器,控制权的转移就是反转。控制反转只是针对应用本身,并不负责对依赖对象进行创建及维护,依赖对象的创建及维护是由外部容器负责的。SQL概述01二、Spring功能架构SpringFramework共有十几个组件,其中核心组件有三个:Core、Context和Beans,如图3-1所示。02SpringIoC容器SpringIoC容器02容器从系统开发的角度,可以分为Web容器和编程容器,其中,Web容器应用于服务器位于组件和平台之间的接口集合;编程容器是一种对象,用来存储和组织其他对象。在Spring中,任何的Java类和JavaBean都被当作Bean处理,这些Bean通过容器管理和应用,Spring容器实现了loC和AOP机制。这些机制可以简化Bean对象,并创建和Bean对象之间的解耦,Spring容器有BeanFactory和ApplicationContext两种类型。一、Spring容器SpringIoC容器02以下是Spring的主要接口设计关系,如图3-2所示。一、Spring容器SpringIoC容器02二、Bean的实例化Spring框架中创建Bean的方式通常有以下三种方式:●调用构造器(默认无参)创建Bean实例。●靡使用静态工厂方法创建Bean。●使用实例工厂方法创建Bean.SpringIoC容器02二、Bean的实例化1.调用构造器创建Bean实例构造器方法创建Bean实例是最常见的情况,BeanFactory使用默认的构造器来创建Bean实例,该实例是默认实例,Spring对Bean实例的所有属性执行默认初始化行为。实例代码如下:
(1)创建实例化的Bean(2)在applicationContext.xml文件中配置SpringIoC容器02二、Bean的实例化2.使用静态工厂方法创建Bean静态工厂方法创建Bean实例时,必须指定class属性,但是这里的class属性并不是指定Bean实例的实现类,而是静态工厂类。Spring需要根据静态工厂类的静态方法来创建Bean实例,除此之外,还需要使用factory-method属性来指定静态工厂方法名。Spring便会调用.静态工厂方法返回Bean的一个实例,使用静态工厂方法创建Bean实例时,Spring先解析配置文件,并根据配置文件指定的信息,然后通过反射调用静态工厂类的静态工厂方法,将该静态工厂方法的返回值作为Bean的实例。SpringIoC容器02二、Bean的实例化3.使用实例工厂方法创建Bean实例工厂方法与静态工厂方法不同:调用静态工厂方法只需使用工厂类,调用实例工厂方法则必须使用工厂实例。采用实例工厂方法时,配置Bean实例的<bean../>元素无须是class属性,因为Spring容器不再直接实例化该Bean,Spring容器仅仅调用实例工厂的工厂方法,工厂方法负责创建Bean实例。在XML配置文件中进行相关的配置采用实例工厂方法创建Bean时,需要为<bean../>标签元素指定两个属性:●factory-bean:
该属性的值为1工厂Bean的id;●factorymethod:该属性指定实例工厂的方法。SpringIoC容器02三、Bean的作用域及生命周期1.容器中Bean的作用域默认中由Spring创建的示例都是单例,即只生成一个对象实例而不是多个,但是在开发过程中大多希望通过SpringIoC容器获取多个实例,因此Spring允许使用者配置Spring容器的作用域。singleton和prototype是两种常用的作用域,如果设置为singleton作用域,则每次请求该Bean时都将获得相同的实例。如果不指定Bean的作用域,则默认使用singleton作用域。SpringIoC容器02三、Bean的作用域及生命周期2.容器中Bean的生命周期如果将Bean的作用域设置为singleton,那么Spring就可以管理Bean的生命周期。Spring可以精确地知道singleton域Bean何时被创建、何时初始化完成,以及容器何时准备销毁Bean实例。因为对于singleton作用域的Bean,客户端的每次请求都返回同一个Bean实例,Bean的销毁不受客户端代码的控制,它的生命周期都在Spring的掌握之中。SpringIoC容器02三、IoC容器的概念及详解IoC容器IoC就是具有依赖注入功能的容器。它负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。在IoC容器中的代表就是org.springframework.beans包的BeanFactory接口。BeanFactory接口提供了IoC容器的最基本功能;简单地说,BeanFactory接口提供了IOC容器最基本的功能,而ApplicationContext则增加了更多支持企业级的功能。由于ApplicationContext完全继承BeanFactory,因此,BeanFactory所具有的语义也适用于ApplicationContext。SpringIoC容器02三、IoC容器的概念及详解IoC容器1.容器实现(1)XmlBeanFactory:BeanFactory实现,提供基本的IoC容器功能,可以从classpath或文件系统等渠道获取资源;(2)ClassPathXmlApplicationContext:ApplicationContext实现,可从classpath获取配置文件;(3)FileSystemXmlApplicationContext:ApplicationContext实现,可从文件系统获取配置文件。SpringIoC容器02三、IoC容器的概念及详解IoC容器2.用ApplicationContext接口获取Bean方法.(1)ObjectgetBean(Stringname);根据名称返回一个Bean,客户端需要自己进行类型转换。(2)TgetBean(Stringname,Class<T>requiredType):
根据名称和指定的类型返回一个Bean,客户端无须自己进行类型转换。如果类型转换失败,则容器抛出异常。(3)TgetBean(Class<T>requiredType):根据指定的类型返回一个Bean,客户端无须自己进行类型转换。如果没有或有多于一个Bean的存在,则容器将抛出异常。(4)Map<String,T>getBeansOfType(Class<T>type):
根据指定的类型返回一个键值为名字和值为Bean对象的Map,如果没有Bean对象存在则返回空的Map。03装配Bean装配Bean03依赖注入通常有三种方式:●串使用接口方式注入;●使用构造器注入;●使用属性的setter方法注入,这是最常用的方式。Spring支持后面的两种依赖注入的方式。以下分别通过XML文件配置方式、自动注解方式和JavaConfig配置方式介绍Spring中的依赖注入。装配Bean03一、XML文件配置方式1.构造器注入(1)在XML文件中注入普通属性,可以直接通过<constructor-tag>元素的name属性来配置。(2)在XML文件中注入对象,可以构造一个Person类,并在此类中依赖上述的Car类。装配Bean03一、XML文件配置方式2.setter方法注入(1)注入普通属性(2)注入对象属性在上面的Person类中添加如下代码:装配Bean03二、自动注解方式Spring中提供注解方式对Bean进行配置。这种方式不需要进行手动配置,Spring会自动发现Bean,并进行装配。在Spring中,通过以下的两种方式可以让Spring容器发现Bean。●组件扫描:Spring可自动发现应用上下文所创建的Bean。●自动装配:Spring可自动地完成对象之间的依赖关系。组件扫描默认是不启用的,可以通过在XML中配置元素,实例代码如下:04面向切面编程面向切面编程04一、AOP概念面向切面编程在扩展功能时不修改源代码,只是将功能代码从业务逻辑代码中分离出来。AOP的主要功能是日志记录、性能统计、安全控制、事务处理、异常处理等,其主要意图是将日志记录、性能统计等代码从业务逻辑代码中划分出来。通过对这些行为的分离,可以将其独立到非指导业务逻辑的方法中,进而在改变这些行为时不会影响业务逻辑的代码。面向切面编程04二、AOP特点与底层实现1.AOP底层实现AOP底层使用动态代理实现,包括两种方式:◎要使用JDK动态代理实现。◎使用CGLIB来实现。面向切面编程04二、AOP特点与底层实现2.JDK动态代理实现只能对实现了接口的类生成代理而不是针对类,该目标类型实现的接口都将被代理。它的原理是通过在运行期间创建一个接口的实现类来完成对目标对象的代理,其步骤如下:◎定义一个实现接口InvocationHandler的类;◎通过构造函数注入被代理类;◎实现invoke(Objectproxy,Methodmethod,Object[]args)方法;◎在主函数中获得被代理类的类加载器;◎使用Proxy.newProxyInstance()产生一个代理对象;
◎通过代理对象调用各种方法。面向切面编程04二、AOP特点与底层实现3.CGLIB动态代理实现只针对类实现代理,其原理是先对指定的类生成一个子类,然后再覆盖其中的方法,其步骤如下:◎定义一个实现了MethodInterceptor接口的类;◎实现其intercept()方法,在其中调用proxy.invokeSuper()。面向切面编程04二、AOP特点与底层实现4.代理方式的选择(1)如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP,也可以强制使用CGLIB实现AOP。(2)如果目标对象没有实现接口,则必须采用CGLIB库,Spring会自动在JDK动态代理和CGLIB之间转换。静态代理和动态代理的区别如下:①静态代理:先自己编写创建代理类,然后再进行编译。在程序运行前,代理类的.class文件就已经存在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力设备检测实验室管理面试题及答案
- 活动策划师考试重点与难点解析
- 供应链主管考试题含答案
- 证券从业资格考试重点突破与考点梳理含答案
- 工程管理师岗位面试题及项目控制技巧含答案
- 广西贵百河2025-2026学年高一上学期12月联考英语试题
- 2025年市场动态分析与预测系统项目可行性研究报告
- 2025年农业现代化动力系统可行性研究报告
- 2025年家具制造企业自动化升级项目可行性研究报告
- 2025年智能物流仓储系统研发可行性研究报告
- 2025年法律实务赛项 国赛 备考考试试题库 有答案
- 感染科医护人员防护措施
- 物料异常应急预案
- 公司员工意识培训课件
- 仓库统计员的工作总结
- 第一讲 决胜“十四五”奋发向前行
- 实施指南(2025)《DL-T 5294-2023 火力发电建设工程机组调试技术规范》
- 护理手术室理论知识培训课件
- 宁德时代shl测试题库以及答案解析
- 立体仓库安全操作培训课件
- 护士药品管理工作总结
评论
0/150
提交评论