Cglib,asm,Aspect,JDK原生的代理模式这四种有哪些差别,原理各是什么?
2016-07-11 21:42
741 查看
1.jdk是内部生成了一个实现了被代理类所有接口的代理类,用反射来调用InvocationHandler的invoke方法来代理所有类,生成速度最快,执行速度最慢。
2.asm直接操作字节码,然后用classload加载如jvm里,生成速度慢,执行速度较快。
3.感觉cglib是对asm的封装啊,不用了解那么多class类结构就可以用了。由于封装性能比asm差点,但是比JDK快。
4.aspectJ是编译的时候直接编译入切面,速度应该是最快的。
使用cglib为目标类提供动态代理:需要导入cglib.jar和asm.jar。如果出现asm中的类无法找到的异常,在java工程中是真的缺少asm.jar,而在web工程中很可能是asm.jar和spring提供的org.springframework.asm-3.0.4.RELEASE.jar包冲突。
2.asm直接操作字节码,然后用classload加载如jvm里,生成速度慢,执行速度较快。
3.感觉cglib是对asm的封装啊,不用了解那么多class类结构就可以用了。由于封装性能比asm差点,但是比JDK快。
4.aspectJ是编译的时候直接编译入切面,速度应该是最快的。
使用cglib为目标类提供动态代理:需要导入cglib.jar和asm.jar。如果出现asm中的类无法找到的异常,在java工程中是真的缺少asm.jar,而在web工程中很可能是asm.jar和spring提供的org.springframework.asm-3.0.4.RELEASE.jar包冲突。
相关文章推荐
- ASP.NET MVC学习之控制器篇(二)
- ASP.NET MVC学习之控制器篇
- [转] c# 模拟Asp.net页面中的某个按钮的点击,向web服务器发出请求
- WebForm页面生命周期及asp.net运行机制
- WebForm页面生命周期及asp.net运行机制
- Robi改造计划更新---moveit终于在树莓派raspberry 3B(raspbian<Jessie>, ROS Indigo版本)上安装好了
- Mixing ASP.NET Webforms and ASP.NET MVC
- ASP.NET中Ajax怎么使用
- ASP.NET的内置对象之三 Session
- ASP.net Core 部署说明(Ubuntu)
- Asp.net core mvc里面怎么添加全局的Filter
- ASP.NET Windows身份验证
- 基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解
- 操作xml文档的通用方法
- ASP和JSP的区别是什么
- ASP.NET Forms身份验证登录
- ASP.NET自带对象JSON字符串与实体类的转换
- (1)Assetbundle基于Asp3.Net动态加载模型
- ASP.NET 文件压缩解压类(C#)
- win10下ASP.NET Core部署环境搭建步骤