软件架构设计实践— 基于SSM框架 课件 第6章 Spring的AOP机制.pptx

软件架构设计实践— 基于SSM框架 课件 第6章 Spring的AOP机制.pptx

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

基于SSM框架的软件架构设计实战SoftwareArchitectureDesignPracticeBasedonSSMFramework

第6章Spring的AOP机制1234面向切面编程的概念SpringAOP——编程式SpringAOP——声明式SpringAOP——AspectJ

面向切面编程的概念

面向切面编程的概念问题的提出

面向切面编程的概念问题违反“开放封闭”原则程序员无法专注于业务逻辑解决思路将这类与业务逻辑无关的重复代码抽取出来,放到独立模块中

面向切面编程的概念面向切面编程(AOP,AspectOrientedProgramming)将分散在各个业务逻辑中的相同代码,通过“横向切割”的方式抽取到独立模块中一方面增强代码复用性,另一方面使编程人员专注于业务逻辑

面向切面编程的概念横切性关注点(cross-cuttingconcerns):在一个业务流程中插入与业务逻辑无关的系统服务逻辑,这样的逻辑称为横切关注点连接点(jointpoint):程序执行过程中明确的点,如方法调用或抛出特定异常增强/通知(advice):拦截到连接点之后所要做的事情切入点(pointcut):一个增强将被引发的一类连接点的统称切面/方面(aspect):横切性关注点的抽象,是切入点和增强的结合织入(weaving):将增强应用到连接点的过程

面向切面编程的概念SpringAOP基于动态代理技术,把增强、切点、切面等抽象成类,便于应用,SpringAOP既支持JDK动态代理,也支持CGLib动态代理如果目标对象实现了接口,默认采用JDK动态代理也可以强制使用CGLib动态代理如果没有实现接口,则使用CGLib动态代理

SprinGAOP——

编程式

SpringAOP——编程式(增强)SpringAOP将增强代码织入连接点的原理:扫描所有类,发现有实现增强接口的类则将其中的增强方法织入

SpringAOP——编程式(增强)SpringAOP中增强的类型前置增强:在目标方法调用前执行后置增强:在目标方法调用后执行异常增强:在目标方法调用发生异常后执行环绕增强:在目标方法调用前和调用后执行引介增强:为目标类创建实现新接口的代理

SpringAOP——编程式(增强)

SpringAOP——编程式(增强)定义增强类,实现特定增强接口在增强类中重写特定方法,实现增强操作使用时创建代理工厂(ProxyFactory)调用代理工厂的setTarget()方法设置目标对象,传入目标对象作为参数调用代理工厂的addAdvice()方法添加增强,传入增强类实例作为参数调用ProxyFactory的getProxy()方法获取代理对象

SpringAOP——编程式(增强)前置增强类method表示连接点方法,其类型为Methodargs为连接点方法的参数,它是一个Object数组target为目标对象。

SpringAOP——编程式(增强)后置增强类returnValue:连接点方法的返回值method:连接点方法args:连接点方法的参数target:目标对象

SpringAOP——编程式(增强)后置增强类

SpringAOP——编程式(增强)异常增强类method:连接点方法args:连接点方法的参数target:目标对象ex:连接点方法抛出的异常

SpringAOP——编程式(增强)异常增强类

SpringAOP——编程式(增强)环绕增强类

SpringAOP——编程式(增强)引介增强类让目标对象实现一个它原本没有实现的接口继承DelegatingIntroductionInteceptor类

SpringAOP——编程式(切面)增强提供了一部分织入的位置信息,即方法的前面、后面等。但没有指定织入到哪些类的哪些方法中哪些类的哪些方法,这种信息使用切入点描述切面=切入点+增强

SpringAOP——编程式(切面)

SpringAOP——编程式(切面)静态方法名匹配切面:通过类过滤和方法名匹配定义切入点实现步骤定义切面类,继承StaticMethodMatcherPointcutAdvisor类重写matches()方法(在MethodMatcher接口中定义)

SpringAOP——编程式(切面)静态方法名匹配切面method:连接点方法,其类型是MethodtargetClass:目标对象的类型,其类型为Class?,表示任意类类型

SpringAOP——编程式(切面)静态方法名匹配切面

SpringAOP——编程式(切面)静态正则表达式方法名匹配切面:通过正则表达式匹配方法名定义切入点实现类:RegexpMethodPointcutAdvisor,此类所实现的功能已经足够,

您可能关注的文档

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档