博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK动态代理和CGLIB的区别
阅读量:5108 次
发布时间:2019-06-13

本文共 542 字,大约阅读时间需要 1 分钟。

Aspect默认情况下不用实现接口,但对于目标对象,在默认情况下必须实现接口

如果没有实现接口必须引入CGLIB库

我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得

参数值、方法名等等

1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP

2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换

如何强制使用CGLIB实现AOP?
 * 添加CGLIB库,SPRING_HOME/cglib/*.jar
 * 在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/>
 
JDK动态代理和CGLIB字节码生成的区别?
 * JDK动态代理只能对实现了接口的类生成代理,而不能针对类
 * CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法
   因为是继承,所以该类或方法最好不要声明成final 

转载于:https://www.cnblogs.com/niejunlei/p/5280207.html

你可能感兴趣的文章
jquery给net里面的RadioButtonList添加选项改变事件
查看>>
仿QQ5.0以上新版本侧滑效果
查看>>
[Luogu 3224] HNOI2012 永无乡
查看>>
【转】用win7(64位)远程桌面连接linux(Ubuntu14.04)详细教程
查看>>
async+await一起使用
查看>>
数据库 —— mySQL相关
查看>>
关于Servlet的几个小问题
查看>>
java 对于表情和特殊字符的转码解码处理
查看>>
jq 对象获取总结大全
查看>>
java生成复杂word文档的完美解决方案
查看>>
Python实用笔记 (25)面向对象高级编程——多重继承
查看>>
JavaScript 累加求和练习 函数
查看>>
Shell编程基础
查看>>
SWT中的布局之-----FormLayout(表格式布局)
查看>>
(转)Foundation-性能优化之NSDateFormatter
查看>>
Luogu3090 [USACO13NOV]空荡荡的摊位Empty Stalls (动态规划)
查看>>
9.过滤器的使用
查看>>
Java学习笔记————异常的捕获及处理
查看>>
输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表
查看>>
链表中倒数第k个节点
查看>>