第一步:准备目标类
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); }