Spring AOP详解

AOP(Aspect-OrientedProgramming,面向方面编程), 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。实现场景日志记录,性能统计,安全控制,事务处理,异常处理等等。

 

AOPOOP的区别

OOP(面向对象编程)针对业务处理过程的实体及其属性行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。

AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果

简化说明:

  1. OOP是面向对象的,AOP是面向切面的。
  2. 思想结构不同:OOP是纵向的,AOP是横向的。
  3. 侧重点不同:OOP注重业务逻辑单元的划分,AOP偏重业务处理过程的某个步骤或阶段。

实现AOP的技术:

采用动态代理:利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行

采用静态织入的方式:引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

AOP相关概念:

从前有一个叫爪哇的小县城, 在一个月黑风高的晚上, 这个县城中发生了命案. 作案的凶手十分狡猾, 现场没有留下什么有价值的线索. 不过万幸的是, 刚从隔壁回来的老王恰好在这时候无意中发现了凶手行凶的过程, 但是由于天色已晚, 加上凶手蒙着面, 老王并没有看清凶手的面目, 只知道凶手是个男性, 身高约七尺五寸. 爪哇县的县令根据老王的描述, 对守门的士兵下命令说: 凡是发现有身高七尺五寸的男性, 都要抓过来审问. 士兵当然不敢违背县令的命令, 只好把进出城的所有符合条件的人都抓了起来.

切面(Aspect)Aspect 是Pointcut 与 Advice 的组合,类比:“根据老王的线索, 凡是发现有身高七尺五寸的男性, 都要抓过来审问” 这一整个动作可以被认为是一个 Aspect.连接点(Joinpoint)爪哇的小县城里的百姓

切入点(Pointcut): 男性, 身高约七尺五寸(其实也就是定义嫌疑犯的特征)

 

通知(Advice)抓过来审问。这是一个动作。

通知的类型:

@Before("pointCut_()")                              前置通知: 目标方法之前执行

@After("pointCut_()")                                   后置通知:目标方法之后执行(始终执行)

@AfterReturning("pointCut_()")                 返回后通知: 执行方法结束前执行(异常不执行)

@AfterThrowing("pointCut_()")                     异常通知:  出现异常时候执行

@Around("pointCut_()")                            环绕通知: 环绕目标方法执行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值