AOP 的動態代理技術
常用的動態代理技術
JDK 代理 : 基于接口的動態代理技術
cglib 代理:基于父類的動態代理技術
JDK 代理
public class proxy {@Testpublic void test() {final ImplDao dao = new ImplDao();Dao pro = (Dao) Proxy.newProxyInstance(ImplDao.class.getClassLoader(), ImplDao.class.getInterfaces(), new InvocationHandler() {public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("前");Object o = method.invoke(dao, args);System.out.println("后");return o;}});pro.save();}
}
cglib代理
public class proxy {@Testpublic void test() {final ImplDao dao = new ImplDao();Enhancer enhancer=new Enhancer();enhancer.setSuperclass(ImplDao.class);enhancer.setCallback(new MethodInterceptor() {public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println("前");Object re = method.invoke(dao, objects);System.out.println("后");return re;}});ImplDao implDao= (ImplDao)enhancer.create();implDao.save();}
}