第一步:准备目标类
package it.heima.service.Impl;
import it.heima.domain.Product;
import it.heima.service.ProductService;
public class ProductServiceImpl implements ProductService {
@Override
public void add(Product product) {
System.out.println("add方法:添加商品");
}
@Override
public void delete(int id) {
System.out.println("delete方法:删除商品");
}
}
第二步:Cglib动态代理代码
package ti.heima.proxy;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
public class CglibProxyFactory {
private Object target;
public CglibProxyFactory(Object target){
this.target=target;
}
public Object createProxyObj(){
//用于生成代理类
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(target.getClass());
//增强代码
enhancer.setCallback(new MethodInterceptor() {
@Override
public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
System.out.println("我是增强代码,我在增强:"+method.getName()+"方法");
return method.invoke(target,args);
}
});
return enhancer.create();
}
}
第三步:测试
//cglib代理
ProductServiceImpl ps=new ProductServiceImpl();
@Test
public void test03(){
CglibProxyFactory cglibProxyFactory = new CglibProxyFactory(ps);
ProductServiceImpl psi=(ProductServiceImpl) cglibProxyFactory.createProxyObj();
psi.add(product);
psi.delete(1);
}