分享好友 最新资讯首页 最新资讯分类 切换频道
郑州网站设计制作/百度指数关键词搜索趋势
2024-12-29 03:31

AOP就是面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。

郑州网站设计制作/百度指数关键词搜索趋势

将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

可能这样说大家不是理解的很明白,那么请看下面的代码。

假设有一个业务组件Component,其中有3个业务方法:

现在有一个需求,在不改动业务逻辑代码的情况下,在每个业务方法执行前都必须执行一个用户验证,如下:

在这个情况下我们就用到了AOP。
AOP有如两种实现方式
1.静态代理
2.动态代理

特点
①程序中调用执行的是代理对象,构造代理对象时给它一个被代理对象
②代理对象代替真正的对象来执行其方法,并在执行过程中添加额外的职责
③代理对象的一个接口只服务于一种类型的对象,如果代理的方法很多,势必要为每种方法进行代理。

1.将Component 的业务逻辑拿出来创建一个接口

2.实现代理对象,这个实现了业务逻辑接口

3.测试函数

特点:使用动态代理可以使得一个处理者(Handler)服务于各个对象

通过实现InvocationHandler接口实现动态代理

测试函数

使用代理对象将日志等与业务逻辑无关的动作或任务提取出来,设计成为一个服务对象称为Aspect,将上述这些与业务逻辑无关的动作在AOP中称之为Cross-cutting concern

Aspect
散落于各个业务逻辑之中的Cross-cutting concerns收集起来,设计成为独立可重用的对象,称为Aspect。

Advice
Aspect当中对Cross-cutting concerns的具体实现称为Advice

Jointpoint
Advice在应用程序执行时加入业务流程的点或时机(只支持方法的Jointpoint

Pointcut
Pointcut定义了感兴趣的Jointpoint,当调用的方法符合Pointcut表达式时,将Advice织入到应用程序中。

Target
被代理的对象(一个Advice被应用的对象)

Introduction
可以为某个已编写或编译完的类,在执行时期动态加入一些方法

Weave
Advice被应用到Target上的过程,不同时间点(Compile、Classload、Runtime

由于Weave到Target的时机不同,Spring提供了几种不同的Advices(Before Advice、After Advice 、Around Advice、Throw Advice

例如:beforeadvice可通过实现MethodBeforeAdvice接口实现

便可在执行icom.business1();之前调用用户验证

其余advice也是一样

在Spring2.0中,可以使用标签来定义After Returning Advice,不用实现AfterReturningAdvice接口,此文不在描述,想学习者自行找资料学习。(需要架包 aspectjweaver.jar、asm-.jar、asm-commons-.jar

最新文章
【免费MP3转换器(Free MP3 Converter) 怎么用】免费MP3转换器(Free MP3 Converter) 好不好
完全免费MP3转换器(Free MP3 Converter)协助你编号各种各样格式的声轨(如WMA,OGG格式,WAV。运用软件界面相近Windows任务管理
WordPress 非常好用的后台优化加速插件
是一款语言开发的博客程序平台,现在已经有很多站长都选择用搭建自己的博客站点,在使用中,部分没有优化后台会变的非常卡顿,今
OTA网络推广,有哪几种常见的推广方式?
OTA网络推广是指在线旅游代理商(OTA)通过各种渠道和手段,对其平台上的旅游产品进行宣传和推广,以吸引更多的用户进行预订和购
【ICCV2023】无需回放的持续学习:生成实例级提示
论文标题:Generating Instance-level Prompts for Rehearsal-free Continual Learning论文链接:https://openacces
【必看】手机QQ浏览器让你免费将PDF转为PPT,助你职场高效!
想象一下,你在外面移动办公,电脑没在手边,需要及时编辑、修改PDF中的一些内容以便进行演示。手机QQ浏览器的PDF转PPT功能就是
ORB-SLAM:一种通用的(全能的)精确的单目SLAM系统(ORB-SLAM论文翻译)
ORB-SLAM:一种通用的(全能的)精确的单目SLAM系统 原文链接:https://blog.csdn.net/weixin_42905141/article/detai
WorkTool入驻集简云平台,实现无代码集成数百款应用
PART.1WorkTool介绍WorkTool是一款开源免费的基于企业微信来运行的无人值守群管理机器人程序。使用WorkTool可以自动运行企业微信
IM即时通讯与人工智能:智能助手未来可期
IM即时通讯与人工智能:智能助手未来可期随着互联网技术的飞速发展,IM即时通讯(InstantMessaging)已经成为人们日常生活和工作
Python中的人工智能编程是什么?
python是一门非常流行的编程语言,也是许多人工智能(ai)领域的首选语言。python可以轻松实现ai编程,其灵活性和易学性使其成为