- spring aop底层是由JDK提供的动态代理技术和CGLIB(动态字节码增强技术)实现
- JDK动态代理:JDK动态代理只针对于接口类
- CGLIB:可以针对没有接口的java类和有接口的java类
java的JDK的动态代理:
- new的java类必须存在接口,通过一个工具类,对java类中的一些方法进行共能补充。或者将一些公共方法提取写在工具类中。
- 代码实现:目标类target
代理工具类
测试代码:
cglib动态代理:
- CGLIB(Code Generation Library)是一个开源项目,cglib它可以为没有实现接口的类做代理,也可以为接口类做代理。
- 代码:setCallback传递的参数是Callback类型,我们使用的MethodInterceptor。
测试代码: