jdk 动态代理与spring 动态代理区别
答案:2 悬赏:50
解决时间 2021-02-17 09:46
- 提问者网友:星空下的寂寞
- 2021-02-16 09:12
jdk 动态代理与spring 动态代理区别
最佳答案
- 二级知识专家网友:修女的自白
- 2021-02-16 10:38
spring有两种动态代理方式,一种就是jdk动态代理,还有就是cglib动态代理,jdk动态代理只能代理接口,cglib可以是类。jdk代理生成速度比cglib快,性能没有cglib好
全部回答
- 1楼网友:有钳、任性
- 2021-02-16 10:50
aspect默认情况下不用实现接口,但对于目标对象(usermanagerimpl.java),在默认情况下必须实现接口
如果没有实现接口必须引入cglib库
我们可以通过advice中添加一个joinpoint参数,这个值会由spring自动传入,从joinpoint中可以取得
参数值、方法名等等
1、如果目标对象实现了接口,默认情况下会采用jdk的动态代理实现aop
2、如果目标对象实现了接口,可以强制使用cglib实现aop
3、如果目标对象没有实现了接口,必须采用cglib库,spring会自动在jdk动态代理和cglib之间转换
如何强制使用cglib实现aop?
* 添加cglib库,spring_home/cglib/*.jar
* 在spring配置文件中加入
jdk动态代理和cglib字节码生成的区别?
* jdk动态代理只能对实现了接口的类生成代理,而不能针对类
* cglib是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法
因为是继承,所以该类或方法最好不要声明成final
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯