分享好友 最新资讯首页 最新资讯分类 切换频道
郑州网站设计制作/百度指数关键词搜索趋势
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

最新文章
班级优化大师手机版2024智能管理班级上传App
班级优化大师安卓版2024是一款智能管理班级实用工具类型软件,专为教师打造的一款智能班级管理工具,也是各大名师都在使用的工具
探索未来之路:深度解析网站建设开发的艺术与实践定制
在当今这个数字化时代,网站作为企业与消费者之间的桥梁,其重要性不言而喻。一个优秀的网站不仅承载着企业的品牌形象,更是实现
班级优化大师最新版本简介:
班级优化大师免费下载安装是一款专为中小学教师打造的智能班级管理工具,通过AI等智能技术与教学管理的应用融合,赋能中国教师班
药品的研发成本里,也藏着巨额“营销费用”
在当今复杂多变的医药产业环境中,药品的研发成本一直是行业内外关注的焦点。传统观念中,研发成本主要涵盖新药发现、临床前研究
香港这么乱!从法律角度看,武警部队能否前往维持秩序?
众所周知,近几个月来,香港地区爆发了一系列集会游行示威活动。令人遗憾的是,这些活动已经不断向着暴力恐怖的方向发展。对此,
网贷自由还款怎么操作
小编导语在现代社会中,网络贷款(网贷)已成为越来越多人的融资选择。无论是为了应急消费、购置大件物品,还是进行投资,网贷都
河南纠正不良叛逆行为的矫正学校排名名单出炉
沉迷游戏对孩子有什么坏处1、学习成绩下降孩子沉迷游戏之后,把大部分的精力全都放到了游戏上,根本就无心学习,甚至连老师布置
莱卡水印相机(小米11莱卡水印相机)
1、小米12sp能不能关掉莱卡滤镜2、华为mate9怎么使用水印相机3、徕卡水印苹果快捷指令4、怎样保留徕卡去掉型号5、小米莱卡水印相
Python爬虫 | 如何用Python爬虫一天内收集数百万条数据?
你是否遇到过需要收集大量数据的问题?比如需要分析市场趋势,或者是想要了解某个领域的发展动态。手动收集这些数据
若曦神吐槽第七期:经典服的那些事儿
  玩御龙在天的朋友最近急了,为嘛?经典服要出来了呗!骨灰级屌丝都急着讨要激活码,到处找工会找靠山,妹子们也没闲住,到处去