package 拦截器;public interface 一个接口 { public void sys();}
package 拦截器;public class 一个类 implements 一个接口{ @Override public void sys() { // TODO 自动生成的方法存根 System.out.println("一个类执行了"); }}
package 拦截器;import java.lang.reflect.Method;public interface 拦截器接口 { public boolean befor(Object proxy,Object obj, Method me,Object[] objs); public void around(Object proxy,Object obj, Method me,Object[] objs); public void after(Object proxy,Object obj, Method me,Object[] objs);}
package 拦截器;import java.lang.reflect.Method;public class 拦截器类 implements 拦截器接口{ @Override public boolean befor(Object proxy, Object obj, Method me, Object[] objs) { // TODO 自动生成的方法存根 System.out.println("拦截器befor执行了"); return true; } @Override public void around(Object proxy, Object obj, Method me, Object[] objs) { // TODO 自动生成的方法存根 System.out.println("拦截器around执行了"); } @Override public void after(Object proxy, Object obj, Method me, Object[] objs) { // TODO 自动生成的方法存根 System.out.println("拦截器after执行了"); }}
package 拦截器;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class 动态代理类 implements InvocationHandler{ Object obj = null; String ljqm = null; public 动态代理类(Object obj ,String ljqm) { this.obj = obj; this.ljqm = ljqm; } public static Object ss(Object obj ,String ljqm) { return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), new 动态代理类(obj,ljqm)); } @Override public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable { if(ljqm == null) { return arg1.invoke(this.obj, arg2); } Object obj = null; 拦截器接口 lj= (拦截器接口) Class.forName(ljqm).newInstance(); if(lj.befor(arg0, this.obj, arg1, arg2)) { obj = arg1.invoke(this.obj, arg2); }else{ lj.around(arg0, this.obj, arg1, arg2); } lj.after(arg0, this.obj,arg1, arg2); // TODO 自动生成的方法存根 return obj; } }
package 拦截器;public class 实现类 { public static void main(String[] args) { 一个接口 u = (一个接口) 动态代理类.ss(new 一个类(), "拦截器.拦截器类"); u.sys(); }}
转载于:https://www.cnblogs.com/xiaosuye/p/9652614.html