ITest.java
package proxy2;
public interface ITest {
public void test(String str);
}
TestImpl1.java
package proxy2;
public class TestImpl1 implements ITest {
@Override
public void test(String str) {
System.out.println(str + " invoked!");
}
}
TestImpl2.java
package proxy2;
public class TestImpl2 implements ITest {
@Override
public void test(String str) {
System.out.println(str + " invoked!");
}
}
TestProxy.java
package proxy2;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
//cglib动态代理代理类
public class TestProxy implements MethodInterceptor {
private Object target;
public TestProxy(Object target) {
super();
this.target = target;
}
// 取得代理对象
public Object getInstance() {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(this.target.getClass());
// 回调方法
enhancer.setCallback(this);
// 创建代理对象
return enhancer.create();
}
@Override
public Object intercept(Object arg0, Method arg1, Object[] arg2,
MethodProxy arg3) throws Throwable {
System.out.println("事物开始");
arg3.invokeSuper(arg0, arg2);
System.out.println("事物结束");
return null;
}
}