说说你对AOP的理解

AOP(Aspect-Oriented Programming):⾯向切⾯编程。对多个业务代码横切来实现统⼀的业务管理,⽽不⽤侵⼊业务代码本身。这样⾯向切⾯的编程思想就是AOP。
使⽤场景:⽇志记录,事务管理,性能统计,安全控制,异常处理等
优点:代码解耦,统⼀业务功能对具体业务⽆侵⼊性,这样可扩展性更好,灵活性更⾼
SpringAOP是采取动态代理的⽅式,具体是基于JDK和CGLIB两种:

  • JDK动态代理:需要被代理类实现接⼝,使⽤ InvocationHandler 和 Proxy 动态的⽣成代理类
  • CGLIB动态代理:需要被代理类能被继承,不能被final修饰。使⽤ MethodInterceptor 来对⽅法拦截。CGLIB底层是基于ASM字节码框架,在运⾏时动态⽣成代理类

SpringAOP如何使⽤:@Aspect定义切⾯,并注册到容器中,使⽤@Pointcut定义好切点⽅法后,可以对⽬标⽅法进⾏拦截:
 

  • 前置通知 :使⽤@Before:通知⽅法会在⽬标⽅法调⽤之前执⾏。
  • 后置通知 :使⽤@After:通知⽅法会在⽬标⽅法返回或者抛出异常后调⽤。
  • 返回之后通知 :使⽤@AfterReturning:通知⽅法会在⽬标⽅法返回后调⽤。
  • 抛异常后通知 :使⽤@AfterThrowing:通知⽅法会在⽬标⽅法抛出异常后调⽤。
  • 环绕通知 :使⽤@Around:通知包裹了被通知的⽅法,在被通知的⽅法通知之前和调⽤之后执⾏⾃定义的⾏为。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿瞒有我良计15

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

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

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

打赏作者

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

抵扣说明:

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

余额充值