吃透 Spring AOP (1.理解概念)

理解 什么是AOP

AOP,全称面向切面编程。 它可以说是对面向对象OOP的思想升华。从总的理解来讲,AOP是横向对不同程序的抽象。这个思想要不断实践动手之后,才会有很深刻的理解

理解 代理模式

在理解AOP之前,我们首先要单独说一个设计思想 就是代理模式。
简单来讲 就是 methodA()我不想把这个方法暴露出去,或者我想在这个方法的基础上给他加强一下。 那么我就可以创建一个methodB() 引入方法A为私有属性(外界无法访问),然后我在方法b中 对A改造也好 增强也罢 总之就是在a基础上搞来搞去,然后我把B公开给外部。 ——这种思想就叫代理

AOP思想的实现方案——动态代理技术

理解了代理,我们再说动态代理。 所谓的动态代理,就是运行期间 对目标对象的方法进行增强。就是上面说的 B 增强 A, B作为A的代理对象,它和A同名且 A的原有逻辑他全都有, 在这个原有逻辑的基础上 再嵌入其他逻辑或者方法。

AOP相关概念

aop里面有很多术语 我们照着图来看:
在这里插入图片描述
这样看就清晰了:
A是被B代理增强的 所以A是目标对象 生成了A的代理对象。

A的所有方法理论上都是可以被B的方法增强的,所以所有的方法都是连接点

A实际上只有方法1 和方法2 被增强,所以这俩方法是切入点 就是实际被增强的方法

其中方法1作为切点 和B对象的增强方法组合起来 这就是切面。
所以我们看到代理对象里面 有两个切面。


Spring 实现动态代理的两种方式

  • JDK动态代理(默认)
  • CGLIB 动态代理

问题来了 新手可能会晕 spring什么时候用哪种代理??
一句话就可以总结:

被代理的类对象有没有实现接口

如果有 默认使用 JDK动态代理。
如果没有 只能换成CGLIB 动态代理!

就这么言简意赅 你需要看你那个代理的类有没有实现接口。至于为什么 简单来说 jdk动态代理 它创建了一个代理类
而这个代理类——只 能 代 理 接 口


那么jdk动态代理的原理到底是怎么实现的呢?

看下一篇 :JDK动态代理原理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值