关于spring的AOP的理解

如上图所示:里面涉及到几个概念:Aspect、Advice、PointCut、joinPoint

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。

Cross cutting concern:在我们的程序中会存在一些类似于:安全性检查、事务、记录日志等和业务没有密切关系的独立服务,它们遍布于系统的各个角落,我们就可以把这些东西拿出来,这也实现了解耦合的目的,而这些东西可以看做是横切性关注点(Cross cutting concern)

Aspect:将横切性关注点模块化的称之为Aspect,Aspect 声明类似于 Java 中的类声明

Advice:对横切性关注点的具体实现称之为Advice,包含before Advice、after Advice、throw Advice

Joinpoint:表示在程序中明确定义的点,典型的包括方法调用

PointCut:它定义了Advice要发生的地方,可以理解为切入点,它定义了Advice要应用到那些Joinpoint,典型的利用一套表达式,例如上图表示凡事以add方法开头的方法,当然前面肯定是要包含包的,例如那些包下面的以什么开头或者以什么结尾的方法等等,当然表达式很强大,这里不一一阐述

Weave:将Advice应用到target objcet上的过程叫做植入,spring支持的是动态植入


最为强大的AOP的实现是AspectJ,它不但可以作用方法上,还可以作用到譬如类属性的改变等等

还有几个概念:target object、proxy、introduction

target object :advice被应用的对象

proxy:Spring默认使用的是JDK的动态代理,它的代理是运行时创建,也可以使用CGLIB代理

introduction:可以动态的为类添加方法

在某些AOP的实现中没有这两个概念,因为他们在编译期间就将Advice和joinPoint编译到了一起,这样就形成了静态的代理,而Spring中的AOP则是动态代理,在程序运行时动态的生成代理(proxy),然后在代理中调用Advice和target objcet 相应的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值