目标类 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();
}
}
