package com.gqc.factory;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import com.gqc.service.ISomeService;
import com.gqc.service.SomeServiceImpl;
public class MyCglibFactory implements MethodInterceptor {
private ISomeService target;
public MyCglibFactory() {
target = new SomeServiceImpl();
}
public ISomeService myCglibCreator(){
//创建增强器对象
Enhancer enhancer=new Enhancer();
//指定目标类,即父类 (因为cglib是通过创建子类来增强父类的)
enhancer.setSuperclass(ISomeService.class);
//设置回掉接口对象
enhancer.setCallback(this);
return (ISomeService) enhancer.create();
}
//回调方法
@Override
public Object intercept(Object obj, Method method, Object[] args,
MethodProxy proxy) throws Throwable {
//调用目标方法
Object result = method.invoke(target, args