JDK动态代理与Spring AOP

前段时间通过深入研究Spring框架,发现其使用了很多设计模式使其具有良好的架构,其中就包括了很多的代理模式。我们知道,代理模式有如下2种实现方式:

1. 被代理的类和原始类实现同一个接口,然后代理类通过聚合原始类的方法,来实现代理的功能;

2. 被代理的类继承原始类,然后重写原始类的方法并且织入代理功能,来实现代理。

了解了代理模式,这里就可以深入探讨一下Spring的AOP了,Spring的AOP实现方式有2种:

- JDK动态代理

- CG Library

因为JDK的动态代理是基于上述第1种方式实现的。JDK的动态代理在这个基础上动态化的生成匿名类,通过将在原始类上的代理功能通过反射和运行时编译的技术,实现的动态代理。所以综上,2种实现方式的区别为:

- JDK动态代理:使用的第1种代理模式实现,需要被代理类实现了一个特定接口

- CG Library:使用第2种代理模式实现,无上面的限制,他是通过继承的方式实现的代理

理解了代理模式以及动态代理模式,再来理解AOP代理的2种实现方式就水到渠成了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值