MyInterceptor:
package com.mth.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class MyInterceptor implements InvocationHandler {
private Object target;
public MyInterceptor(Object target) {
super();
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("==================");
method.invoke(target, args);
return null;
}
}
测试类Test:
package com.mth.test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import com.mth.IStudentDaoImpl.IStudentDaoImpl;
import com.mth.IStudentDaoImpl.IteaImpl;
import com.mth.bean.Student;
import com.mth.bean.Teacher;
import com.mth.dao.IStudentDao;
import com.mth.dao.ITeacherDao;
import com.mth.proxy.MyInterceptor;
public class Test {
public static void main(String[] args) {
// 创建一个代理对象 与被代理对象studao使用同一个classLoader,以及实现的结构对象,使用哪个拦截器
// 根据接口对象产生代理对象
IStudentDao stu = new IStudentDaoImpl();
InvocationHandler h = new MyInterceptor(stu);
IStudentDao stu1 = (IStudentDao) Proxy.newProxyInstance(stu.getClass()
.getClassLoader(), stu.getClass().getInterfaces(), h);
stu1.save(new Student());
ITeacherDao tea = new IteaImpl();
InvocationHandler h1 = new MyInterceptor(tea);
ITeacherDao tea1 = (ITeacherDao) Proxy.newProxyInstance(tea.getClass()
.getClassLoader(), tea.getClass().getInterfaces(), h1);
tea1.save(new Teacher());
}
}