*,可编辑,*,*,可编辑,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,个人近期工作汇报,面向切面编程,(AOP),个人近期工作汇报面向切面编程(AOP),什么是面向切面编程,(AOP)?,AOP,:,AOP,是,OOP,的延续,全称是,Aspect-Oriented Programming,,中文翻译是面向,方面,的编程或者面向,切面,的编程。,AOP,和,OOP,的关系:,OOP,是关注将需求功能划分为不同的并且相对独立,封装良好的类,并让它们有着属于自己的行为,依靠继承和多态等来定义彼此的关系,AOP,是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可。,什么是面向切面编程(AOP)?AOP:AOP是OOP的延,AOP,是什么样的编程方法,“分离关注”关系,所谓的分离关注就是将某一通用的需求功能从不相关的类中分离出来,同时能够使得很多类共享该通用的需求实现,-,一旦该实现发生变化,只要修改这个“实现”就可以而不影响其它主功能实现。,AOP是什么样的编程方法“分离关注”关系,AOP,术语介绍,切面(,Aspect,),:从对象中抽取出来的横切性功能模块。类似与,OOP,中的一个类。由通知和切入点两部分组成。,通知(,Adivice,),:切面的具体实现,例如具体的日志操作代码,一般是是切面中的某个方法。,连接点(,Joinpoint,),:目标对象中插入通知的地方。即,advice,的应用位置。,切入点(,Pointcut,),:切面的一部分,对应一个表达式,定义了,advice,应该被插入到什么样的,Joinpoint,点上,即,advice,的应用范围,AOP术语介绍切面(Aspect):从对象中抽取出来的横切性,AOP,术语介绍,目标对象(,Target,),:,就是那些即将切入切面的对象,也就是那些被通知的对象。这些对象中已经只剩下干干净净的核心业务逻辑代码了,所有的共有功能代码等待,AOP,容器的切入。,代理对象(,Proxy,),:,将通知应用到目标对象之后被动态创建的对象。可以简单地理解为,代理对象的功能等于目标对象的核心业务逻辑功能加上共有功能。代理对象对于使用者而言是透明的,是程序运行过程中的产物。,织入(,Weaving,),:,将切面应用到目标对象从而创建一个新的代理对象的过程。这个过程可以发生在编译期、类装载期及运行期,当然不同的发生点有着不同的前提条件。譬如发生在编译期的话,就要求有一个支持这种,AOP,实现的特殊编译器;发生在类装载期,就要求有一个支持,AOP,实现的特殊类装载器;只有发生在运行期,则可直接通过,Java,语言的反射机制与动态代理机制来动态实现。,AOP术语介绍目标对象(Target):就是那些即将切入切,AOP,实现原理,如图:,AOP,实际上是由目标类的代理类实现的,。,AOP,代理其实是由,AOP,框架动态生成的一个对象,该对象可作为目标对象使用,。,A,OP,代理包含了目标对象的全部方法,但,AOP,代理中的方法与目标对象的方法存在差异,,AOP,方法在特定切入点添加了增强处理,并回调了目标对象的方法,。,AOP实现原理如图:AOP 实际上是由目标类的代理类实现的。,THANK YOU,SUCCESS,2024/11/15,7,可编辑,THANK YOUSUCCESS2023/10/67,AOP,基于代理的实现,不使用,aop,思想的实现:,AOP基于代理的实现不使用aop思想的实现:,AOP,基于代理的实现,使用静态代理模式实现,Aop,来实现日志服务:,AOP基于代理的实现使用静态代理模式实现Aop来实现日志服务,AOP,基于代理的实现,使用动态代理模式实现,Aop,来实现日志服务:,AOP基于代理的实现使用动态代理模式实现Aop来实现日志服务,Spring AOP,的实现,Spring AOP 的实现,谢谢!,谢谢!,THANK YOU,SUCCESS,2024/11/15,13,可编辑,THANK YOUSUCCESS2023/10/61,