第十讲Spring的AOP课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第十讲Spring的AOP课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 Spring AOP 课件
- 资源描述:
-
1、讲讲使使用用SpringSpringAOPAOP第第1010的的2本讲内容v 从企业应用的思考从企业应用的思考v 如何应对挑战如何应对挑战v 常用设计模式与动态代理常用设计模式与动态代理v 面向方面编程(面向方面编程(AOPAOP)v Spring2.xSpring2.x对对AOPAOP的支持的支持3从企业应用的思考企业应用开发面临的挑战企业应用开发面临的挑战 v 企业应用的开发是企业应用的开发是相当复杂相当复杂的,这种复杂除了表现在的,这种复杂除了表现在技术技术方面方面外,还表现在外,还表现在行业本身行业本身。 v 企业级应用的开发往往需要面对更多的问题企业级应用的开发往往需要面对更多的问题
2、 大量的并发访问大量的并发访问 复杂的环境复杂的环境 网络的不稳定网络的不稳定 还有外部的还有外部的CrackCrack行为等行为等v 因此企业级应用必须提供更好的因此企业级应用必须提供更好的多线程多线程的支持,具备良好的支持,具备良好的的适应性适应性及良好的及良好的安全性安全性等。等。 4从企业应用的思考思考的方面思考的方面v 可扩展性、可伸缩性可扩展性、可伸缩性 一个积极的软件开发者应该正确对待需求的变更。需求的变更表明有市场前景,只有有变化的产品才是有市场的产品。 优秀的企业级应用必须具备良好的可扩展性和可伸缩性。因为良好的可扩展性允许系统动态增加新功能,而不会影响原有的功能。 良好的可
3、扩展性建立在高度的解耦之上。在JEE应用中,大多采用XML文件作为配置文件。使用XML配置文件可以避免修改代码,从而能极好地提高程序的解耦。 5从企业应用的思考思考的方面思考的方面v 快捷、可控的开发快捷、可控的开发 如果没有时间限制,任何一个软件系统在理论上都是可实现的。 但这样的条件不存在,软件系统必须要及时投放市场。对于企业级应用,时间的限制则更加严格。 企业的信息是瞬息万变的,与之对应的系统必须能与时俱进。因而采用新技术的问题,乐于与风险。 因此快捷、可控是企业信息化系统必须面对的挑战。6从企业应用的思考思考的方面思考的方面v 稳定性、高效性稳定性、高效性 企业级应用的一个显著特点:并
4、发访问量大,访问频繁。因此稳定性、高效性是企业级信息化系统必须达到的要求。 企业级应用必须有优秀的性能,如采用缓冲池的技术保存那些创建开销大的对象(典型的应用是数据连接池)、数据缓存。 7从企业应用的思考思考的方面思考的方面v 花费最小化,利益最大化花费最小化,利益最大化永恒的话题永恒的话题 任何一个商业组织都希望尽可能地降低开销。 对开发者而言,降低开销主要是如何使在开发上的投资更有保值效果。即开发的软件系统具有很好的复用性。 在良好的JEE架构设计中,复用是一个永恒的追求目标。架构设计师希望系统中大部分的组件可以复用,甚至能让系统的整个层可以复用。对于采用DAO模式的系统架构,如果数据库不
5、发生大的改变,整个DAO层都不需要变化。8本讲内容v 从企业应用的思考从企业应用的思考v 如何应对挑战如何应对挑战v 常用设计模式与动态代理常用设计模式与动态代理v 面向方面编程(面向方面编程(AOPAOP)v Spring2.xSpring2.x对对AOPAOP的支持的支持9从企业应用的思考如何应对挑战如何应对挑战v 使用使用建模工具建模工具 建模工具不一定是ROSE等,可以是简单的手画草图。当然,借助于专业的建模工具可以更好地确定系统模型。 任何语言的描述都是很空洞,而且具有很大的歧义性。使用图形则更加直观,而且意义更加明确。 关于建模工具,推荐采用统一建模语言:UML。但UML的使用也需
6、要掌握分寸。在软件开发人员内部使用时,尽可能使用规范的UML;但用于与行业专家沟通时,要辅助文字说明。10从企业应用的思考如何应对挑战如何应对挑战v利用利用优秀的框架优秀的框架 使用框架可以大大提高系统的开发效率。除非开发一个非常小的系统,而且是开发后无须修改的系统,才可以完全抛弃框架。好处:1提高生产效率2具有更稳定、更优秀的性能 如果不使用已有的框架,系统开发者将面临着需要自己完成所有的底层部分。除非开发者丝毫不遵守软件复用的原则,总是重复书写相同代码。3更好的保值性11从企业应用的思考如何应对挑战如何应对挑战v选择性地扩展选择性地扩展 软件的需求千变万化,任何框架不可能总是那么完美,难免
7、需要扩展现有的框架。 对已有的框架进行扩展,则可最大限度地利用已有的框架,但是不要盲目扩展现有框架,因为新增的部分有时会引入新的风险。尽量利用已有组件,除非无法使用已有框架时,才考虑选择性地扩展。12从企业应用的思考如何应对挑战如何应对挑战v使用使用代码生成器代码生成器 使用代码生成器可以自动生成部分程序。使用代码生成器可以自动生成部分程序。 13本讲内容v 从企业应用的思考从企业应用的思考v 如何应对挑战如何应对挑战v 常用设计模式与动态代理常用设计模式与动态代理v 面向方面编程(面向方面编程(AOPAOP)v Spring2.xSpring2.x对对AOPAOP的支持的支持14从企业应用的
8、思考常用的设计模式及应用常用的设计模式及应用v单态模式单态模式的使用的使用 在任何不需要重复生成Java实例的场景中,都应该考虑使用单态模式。 使用单态模式可以保证系统无须生成多个Java实例,从而减少内存占用率,也降低JVM(Java虚拟机)进行垃圾回收的开销。 单态模式通常有如下两个使用场景: 1.1.工厂模式中的工厂模式中的工厂(工厂不要重复生产产工厂(工厂不要重复生产产品)品)。 2.2.使用服务定位器模式时的使用服务定位器模式时的服务定位器(尽量服务定位器(尽量找)找)。15从企业应用的思考常用的设计模式及应用常用的设计模式及应用v代理模式代理模式的使用的使用 传统的代理模式主要用于
9、用简单对象来代替复杂的对象,如果创建一个对象所需的时间比较长,且计算资源相当昂贵,可以采用一个相对简单的对象来代替它。代理模式可将创建过程推迟到真正需要该对象时完成,一旦整个对象创建成功,对代理的方法调用将变成对实际对象的方法调用。 16从企业应用的思考常用的设计模式及应用常用的设计模式及应用v代理模式代理模式的使用的使用 Java EE中的代理模式通常是采用功能更强大的对象来代替目标对象。 例如,对于普通的业务逻辑组件,其方法都应该有事务性,但这种开始事务和结束事务都是通用步骤。 因此原始业务逻辑对象的方法可以无须事务操作,而是由系统生成动态代理,调用实际的目标方法并负责事务操作。17从企业
10、应用的思考v对象由工厂产生。对象由工厂产生。v工厂作为工厂作为代理处理器代理处理器,对产生的对象,对产生的对象增加增加事务处事务处理代码或安全处理代码。理代码或安全处理代码。v主要是对对象中的主要是对对象中的方法增加事务处理方法增加事务处理代码。代码。v可以在处理器中硬编码,对方法增加代码。可以在处理器中硬编码,对方法增加代码。v通用的通用的代理处理器代理处理器,该处理器并不需要与任何特,该处理器并不需要与任何特定的目标对象耦合。定的目标对象耦合。 v为了该代理处理器有更好的适应性,系统可以将为了该代理处理器有更好的适应性,系统可以将需要增加事务操作的需要增加事务操作的方法方法以以XML文件配
11、置,而该文件配置,而该代理处理器代理处理器负责解析负责解析XML文档,根据配置决定对文档,根据配置决定对哪个方法增加事务处理。哪个方法增加事务处理。18从企业应用的思考v 动态代理动态代理 在运行时,能够动态实现指定接口的机制,从而生成新的类。 动态代理是JDK1.3引入的。 开发者需要借助于java.lang.reflect.Proxy类来启用代理。 为某对象创建代理后,所有对被代理对象的请求都经过代理的处理,即代理拦截了客户的请求。 为创建动态代理,开发者需要借助Proxy提供的newProxyInstance()方法,并将定义代理类的类装载器、代理实现的接口集合、InvocationHa
12、ndle传入这一静态方法。19本讲内容v 从企业应用的思考从企业应用的思考v 如何应对挑战如何应对挑战v 常用设计模式与动态代理常用设计模式与动态代理v 面向方面编程(面向方面编程(AOPAOP)v Spring2.xSpring2.x对对AOPAOP的支持的支持20AOP概述v AOPAOP(Aspect Oriented ProgrammingAspect Oriented Programming)的背景知识)的背景知识 为满足整个企业应用某方面的需求,开发者为满足整个企业应用某方面的需求,开发者( (架构师架构师) )需要整理出系统的关注点,如下图形象地描述了关注点。需要整理出系统的关注
13、点,如下图形象地描述了关注点。21比如:事务管理、安全性管理、应用的业务逻辑都是应用需要重点解决的问题。被作为关注点看待。整个系统由大量的关注点构成。22AOP概述关注点分类关注点分类v 大体而言,关注点分为两类:大体而言,关注点分为两类:v 核心关注点主要关注系统的业务逻辑;核心关注点主要关注系统的业务逻辑;v 横切关注点主要关注系统级的服务,供业务逻辑使用。横切关注点主要关注系统级的服务,供业务逻辑使用。关注点核心关注点横切关注点23AOP概述v 现实状态现实状态 业务逻辑中,到处都涉及横切关注点。因此对各个已经实现的模块(业务逻辑)而言,都有大量的横切关注点实现。v 新的方案新的方案 业
14、务逻辑用OO技术实现; 横切关注点用AOP技术实现; 横切关注点是系统级服务,对大部分应用是常见的,容易抽象出来,并加以实现。24AOP概述v 实现实现AOPAOP的总体模式的总体模式 OO技术将应用中的核心关注点分解成由层次(继承)结构组成的领域对象集合。 AOP将应用中的横切关注点分解成由切面(Aspect)组成的生态子系统。 它们被分别实现,互为补充,使得应用的开发变得简单、可维护性得到增强。25AOP概述v 实现实现AOPAOP的总体模式的总体模式 为实现单个横切关注点,开发者需要采用若干切面满足它。比如为实现安全性控制横切关注点,开发者需要提供用户论证切面、用户授权切面。26AOP的
15、基本概念v 各种各种AOPAOP实现切面实现切面的技术、框架、机制、手段可能不同,的技术、框架、机制、手段可能不同,但是但是AOPAOP技术的基本概念是相同的。包括以下个术语技术的基本概念是相同的。包括以下个术语: : 连接点(join point) 切入点(cutpoint) 装备(advice) 引入(introduction) 目标对象(target object) 织入(weaving)和 切面(Aspect)。27AOP的基本概念v 连接点连接点(Joinpoint)(Joinpoint) 连接点指应用(目标对象)执行的某个点,如执行到某个方法、访问到某个成员变量、抛出某异常、装载某
16、个类。 通常用连接点的强弱来衡量AOP实现的强弱。Aspect5实现的连接点类型非常多,Spring AOP仅支持方法级连接点。28AOP概念v 切入点(切入点(pointcutpointcut) 通过切入点能够声明、集结连接点。 通常装备与切入点关联在一起,一旦某连接点被触发,则会立即执行相应的装备。开发者借助于pointcut表达语言来完成pointcut的指定工作。29AOP概念v 装备装备(Advice)(Advice) 装备指切面(aspect)在特定连接点所采取的动作。特定连接点由切入点(pointcut)指定。 主要的装备类型包括:Before、 AfterReturning、A
17、fterThrowing、 After 、Around。 Before装备能够在特定连接点被触发前执行,如方法执行前执行的装备。其它类似。30AOP概念v 引入(引入(introducionintroducion) 引入也称为inter-type声明(AspectJ5)。将新的接口、方法、成员变量动态引入到目标类、接口或切面中。v 目标对象(目标对象(target Objecttarget Object) 被若干切面(aspect)装配过的对象,也被称为被装备的对象。31AOP概念v 织入(织入(weavingweaving) 将切面(Aspect)与目标对象组装在一起的过程称为织入。通过织入
18、创建一个被装备的对象。 织入时机有编译期、装载期、运行期。 不同的AOP实现支持不同织入时机。如Spring AOP支持运行期织入;AspectJ5支持编译期和类装载期(Load-Time)织入。32AOP概念v 切面切面(aspect)(aspect) 与OOP中对象的概念一样,是AOP中的核心概念。 切面将pointcut、装备、引入、目标对象等信息集结在一起,从而定义相应的织入规则,这样一个整体称为切面(aspect)。33Spring对AOP的支持vAOPAOP是一种流行的编程模型;是一种流行的编程模型;vAOPAOP的编程思想与的编程思想与OOPOOP不同,是对不同,是对OOPOOP
展开阅读全文