首页>代码>java设计模式之代理模式学习和总结>/java_design_pattern/src/cn/com/jee/pattern/proxy/cglib/CglibProxyFactory.java
package cn.com.jee.pattern.proxy.cglib; import cn.com.jee.pattern.proxy.inter.RealSubject; import net.sf.cglib.proxy.Enhancer; /** * 工厂类,生成增强过的目标类(已加入切入逻辑) * @author Guobaoqiang */ public class CglibProxyFactory { /** * 获得增强之后的目标类,即添加了切入逻辑advice之后的目标类 * * @param proxy * @return */ public static RealSubject getInstance(CglibProxyHandler proxy) { Enhancer enhancer = new Enhancer(); // 注意这儿的参数是个关键,是基于委托类的对象,而不是接口对象 enhancer.setSuperclass(RealSubject.class); // 回调方法的参数为代理类对象CglibProxyhandler,最后增强目标类调用的是代理类对象CglibProxyhandler中的intercept方法 enhancer.setCallback(proxy); // 此刻,subject不是单纯的目标类,而是增强过的目标类 RealSubject subject = (RealSubject) enhancer.create(); return subject; } }
最近下载更多
莫回头 LV8
2022年5月6日
chenghao4u LV8
2019年5月8日
jiajia91323 LV23
2019年4月18日
蛇蛇皮怪 LV14
2018年11月9日
alextonn9 LV9
2017年6月14日
houqijun LV9
2017年3月13日
jiangarctic LV17
2016年9月18日
jy01757638 LV1
2016年6月15日
Bai_yk LV17
2016年3月10日
ddman9009 LV25
2016年1月14日