實(shí)現(xiàn)步驟:
1.新建生成動(dòng)態(tài)代理對(duì)象類(lèi),實(shí)現(xiàn)java.lang.reflect.InvocationHandler接口。
2.新建一個(gè)方法用與生成代理對(duì)象并返回對(duì)象。
3.實(shí)現(xiàn)接口方法invoke,這也是切面處理的核心操作地。
-------上層接口
public interface Service {
void doService(String name);
}
-----接口實(shí)現(xiàn)
public class ServiceImpl implements Service{

@Override
public void doService(String name ) {
System.out.println("hello " + name);
}

}

-------實(shí)現(xiàn)InvocationHandler接口的類(lèi)
public class ServiceDynamicProxy implements InvocationHandler {
private Object targetObject ;
//把要代理的類(lèi)傳進(jìn)去
public Object createProxy(Object targetObject){
this.targetObject = targetObject ;
return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
targetObject.getClass().getInterfaces(), this);
}
//invoke方法會(huì)自動(dòng)調(diào)用,切面處理
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
checkSecurity();
System.out.println(proxy.getClass().getName());
Object result = null ;
result = method.invoke(this.targetObject,args);
return result;
}
public void checkSecurity(){
System.o ut.println("check the security ");
}

}-------測(cè)試類(lèi)
public class DynamicProxyClient {
public static void main(String[] args) {
ServiceDynamicProxy dynamicProxy = new ServiceDynamicProxy();
Service service = (Service)dynamicProxy.createProxy(new ServiceImpl());
service.doService("xuyiyu");
}
}

1.新建生成動(dòng)態(tài)代理對(duì)象類(lèi),實(shí)現(xiàn)java.lang.reflect.InvocationHandler接口。
2.新建一個(gè)方法用與生成代理對(duì)象并返回對(duì)象。
3.實(shí)現(xiàn)接口方法invoke,這也是切面處理的核心操作地。
-------上層接口













-------實(shí)現(xiàn)InvocationHandler接口的類(lèi)































