标签:实现类 import loader cat etc get 动态代理 oid new
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();
}
}
标签:实现类 import loader cat etc get 动态代理 oid new
原文地址:https://www.cnblogs.com/xiaosuye/p/9652614.html