首页>代码>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日

最近浏览