cglib动态代理简单的例子
2015-06-01 18:53
316 查看
在spring中,提供了两种动态代理机制,一种是JDK自带的,一种是cglib的动态代理。
<aop:aspectj-autoproxy poxy-target-class="true"/>
这里的true就表示cglib代理
==
==
==
代码来自网络修改后的,代码流程有些乱。。。。。。
<aop:aspectj-autoproxy poxy-target-class="true"/>
这里的true就表示cglib代理
==
package faicm.agent.cglib; /** * 这个是没有实现接口的实现类 * * @author student * */ public class PersonDoImpl { public void addPerson() { System.out.println("增加图书的普通方法..."); } }
==
package faicm.agent.cglib; import java.lang.reflect.Method; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; /** * 使用cglib动态代理 */ public class PersonCglib implements MethodInterceptor { private Object obj; /** * 创建代理对象 上面的obj很随意 ,可以随便该。 */ public Object getInstance(Object target) { this.obj = target; Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(this.obj.getClass());// 可变 enhancer.setCallback(this);// 这个this是指MethodInterceptor 实现类的intercept方法 return enhancer.create(); } public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { System.out.println("做了一些事情"); proxy.invokeSuper(obj, args); System.out.println("做了一些事情"); return null; } }
==
package faicm.agent.cglib; public class TestCglib { public static void main(String[] args) { PersonCglib cglib = new PersonCglib(); PersonDoImpl bookCglib = (PersonDoImpl) cglib .getInstance(new PersonDoImpl()); bookCglib.addPerson(); } }
代码来自网络修改后的,代码流程有些乱。。。。。。
相关文章推荐
- MFC六大核心机制之三:动态创建
- MFC六大核心机制之二:运行时类型识别(RTTI)
- EntityFramework5.0 批量插入错误
- IOS-UIMenuController 和 UIResponderStandardEditActions
- xcode6制作静态库详解
- OC视频笔记(不可变字典常用方法,与优化方法)(可变字典的常用方法)
- 网页html中嵌入特殊字体
- border-radius
- 后台收藏的好文章
- MFC六大核心机制之一:MFC程序的初始化
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 执行环境及作用域
- hihoCoder hiho一下 第四十八周 题目1 : 拓扑排序·二
- nova quota
- Spring组件扫描<context:component-scan/>使用详解
- Hadoop cluster security 1: How to enable HDFS permission ACl
- c++ 设计模式之原型模式
- php查看mysql错误位置
- 猫猫学iOS(五十五)多线程网络之图片下载框架之SDWebImage
- 如何能够选到更适合自己的导师