AOP设计思想

面向切面编程思想

概念:基于OCP原则(对扩展开放,对修改关闭)在不修改类的核心业务代码的的情况下,在对象运行时动态的织入功能。对比OOP,面向对象是一个静态的过程。
底层原理分析:
1.目标对象(被代理的对象)实现接口,底层采用JDK动态代理机制为目标对象创建代理对象(代理类和目标实现共同接口,兄弟关系)
2.目标对象没有实现接口,底层采用CGLIB代理机制,默认创建的代理对象集成目标对象。
相关术语:
切面:一个具体的类对象,包含了切入点和通知。
切入点:切入需要扩展业务的目标类的点(粗粒度下可能是很多个类中的所有的方法,细粒度下可能是某一个类中某一个具体的方法),切入点正则表达式,可以指定粗细粒度的切入点。
通知:要动态织入目标类的扩展的功能(在切面的某个连接点上执行的动作)
连接点:指被拦截到的方法。
AOP通常用于日志处理/事务处理/缓存/权限,大多应用在业务层。

五种类型的通知

类型描述
前置通知方法执行前执行 @Before 优先级第二
返回通知方法return之后执行 @AfterReturning 异常不执行
异常通知方法出现异常以后执行 @AfterThrowing 无异常不执行
后置通知最后通知 @After 优先级其次
环绕通知@Around 优先级最高

切入点正则表达式

关键字描述
bean匹配指定bean id的方法执行
within匹配指定包名下的类型内的方法
execution用于细粒度方法匹配执行具体业务
@annotation用于匹配指定注解修饰的方法执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值