【HBZ分享】SpringAOP原理

SpringAOP原理

  1. 底层采用动态代理的方式实现,在运行期间,对业务方法进行增强,所以不会生成新类。
JDK动态代理
  1. 所以JDK动态代理的使用场景目标类要去实现一个接口才行。
  2. 程序运行时,运用反射机制动态创建,不需要手工编写的,他是通过method.invoke()这个方法进行创建的,JDK动态代理机制是通过委托机制,动态的去实现对应的接口。再委托handler去调用原始的实现类中的方法。
CGLIB动态代理
  1. 使用字节码处理框架asm,通过修改字节码来生成子类,CGLIB使用的是继承的机制,就是被代理的类和代理类之间是继承关系,也就是被代理的那个类不能有final进行修饰,以及方法上存在static, 或者 private修饰的方法都不能使用CGLIB

SpringAOP组成

  1. 横切关注点:
    ○ 对那些方法进行连接,连接后这么处理

  2. 通知Adcice
    ○ 在特定的切入点上执行增强处理

  3. 连接点JoinPoint
    ○ 可以切入的点,比如增删改查都可以作为连接点,因为都可以执行AOP的逻辑

  4. 切入点Pointcut
    ○ 只有真正要执行AOP中逻辑的才可以叫切入点,比如只想把增删改加入事务,查询并不想加入,那么切入点只有增删改,查询并不算切入点,只能说是连接点

  5. 切面Aspect(真正的插入的功能,通常就是一个类)
    ○ 就是要增强逻辑代码,通常是一个类

  6. 目标target
    ○ 目标类,真正的业务逻辑类

  7. 织入Weaving
    ○ 把切面应用到目标方法中,在目标业务方法起到作用了,就叫织入

SpringAOP好处

  1. 减少代码入侵,解耦
  2. 统一横切逻辑,更方便的插入和删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值