jdk动态代理和cglib的区别
2016-07-28 18:54
627 查看
1.JDK动态代理 此时代理对象和目标对象实现了相同的接口,目标对象作为代理对象的一个属性,具体接口实现中,可以在调用目标对象相应方法前后加上其他业务处理逻辑。 代理模式在实际使用时需要指定具体的目标对象,如果为每个类都添加一个代理类的话,会导致类很多,同时如果不知道具体类的话,怎样实现代理模式呢?这就引出动态代理。 JDK动态代理只能针对实现了接口的类生成代理。 2.CGLIB代理 CGLIB(CODE GENERLIZE LIBRARY)代理是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的所有方法,所以该类或方法不能声明称final的。 spring默认会使用JDK的动态代理,但是 如果目标对象没有实现接口,则默认会采用CGLIB代理; 如果目标对象实现了接口,可以强制使用CGLIB实现代理(添加CGLIB库,并在spring配置中加入<aop:aspectj-autoproxy proxy-target-class="true"/>)。
相关文章推荐
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- Java编程规范-----来源于java编程思想
- linphone-LinphoneInfoMessage.java文件分析
- Spring
- java对数据库进行增删改查的封装(封装以后只要一句话就搞定对数据库的增删改查)
- eclipse 启动 org.eclipse.jst.servlet.ui was unable to instantiate class
- 线程“死亡”后的反思
- <JAVA>学习笔记10>——多个客户端连接服务器
- SpringMVC+easyui
- 二维码生成和解析
- JAVA中参数传递的迷惑点
- spring intergration 例子
- Java中对象的引用
- Spring常用注解
- Struts2向action传对象数组
- Java_集合_List
- Spring Data JPA书写原生态sql拼接
- linphone-LinphoneContent.java文件分析
- java并发大总结
- Spring Boot 构建应用——整合 Mybatis