目标类 package com.liu.cglib;public class UserDao{public void insert() {System.out.println("============保存============");}} 代理类 package com.liu.cglib;import java.lang.reflect.Method;import net.sf.cglib.proxy.Enhancer;import net
package com.liu.cglib; public class UserDao{ public void insert() { System.out.println("============保存============"); } }代理类
package com.liu.cglib; import java.lang.reflect.Method; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; public class ProxyFactory implements MethodInterceptor{ //维护目标对象 private Object target; public ProxyFactory(Object target){ this.target = target; } public Object getProxyInstance(){ //创建工具类 Enhancer en = new Enhancer(); //设置父类 en.setSuperclass(target.getClass()); //设置回调函数 en.setCallback(this); return en.create(); } @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { System.out.println("========开启事务========="); Object returnValue = method.invoke(target,args); System.out.println("========结束事务========="); return returnValue; } }测试类
package com.liu.cglib; import org.junit.Test; public class App { @Test public void save(){ UserDao proxy = (UserDao)new ProxyFactory(new UserDao()).getProxyInstance(); proxy.insert(); } }