【AOP系列】(二)—AOP相关概念

前提

  在阅读本篇博文之前,请先阅读上篇博文【AOP系列】(一)—静态代理VS动态代理(Java) ,因为下文中在解释一些概念时,会用到上篇博文中的例子。

思维导图

这里写图片描述

概念解释

横切性关注点(Cross Cutting Concern):独立服务,如系统日志。如果不是独立服务(与业务耦合)就不能横切了。通常这种独立服务需要遍布系统各个角落,遍布在业务流程之中。

切面(Aspect):日志服务会单独写到一个类中,如LogHandler,这个类叫做切面。基于AOP的编程关键是能找到横切性的关注点,形成切面。

模块化:把日志这种服务单独抽到一个类中,这一过程称作模块化。

Advice:在LogHandler这个类中对日志服务做的具体实现(也就是对横切性关注点的具体实现):可以是一句代码(system.out.println),也可是一个方法。Advice可以分类:BeforeAdvice,AfterAdvice,区别在于Advice在目标方法之前调用还是之后调用,Throw Advice 表示当目标发生异常时调用Advice。

PointCut(看做一种约束):指Advice会应用在目标对象的哪些目标方法中,如只应用再add,delete,modify方法上,不应用在select方法上,实际当中需要用表达式进行限制。


Target Object:目标对象。

JoinPoint:在目标对象中,将会应用Advice的方法或属性(AspectJ支持将属性作为JoinPoint),这些叫做连接点。

织入(Weave):即Advice应用在JoinPoint的过程,这个过程有个专业术语,不叫应用,叫织入:

Proxy:(可有可无),动态织入创建代理效率慢,有些是在编译时静态织入,不会产生代理类。

Introduction:动态为某个类增加或减少方法(这个暂时不理解,先写到这里)。

这里写图片描述

总结

  了解这些概念,不是为了让大家记住,而是更好地去理解AOP思想。虽然AOP的全称是Aspect Oriented Programming,但是经我一总结,也可以解释为Aspect,Object(Target Object),Proxy。也是蛮有意思的啊!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值