Java Proxy
首先实现一个InvocationHandler,方法调用会被转发到该类的invoke()方法。
然后在需要使用Hello的时候,通过JDK动态代理获取Hello的代理对象。
// Java Proxy
// 1. 首先实现一个InvocationHandler,方法调用会被转发到该类的invoke()方法。
classLogInvocationHandler implementsInvocationHandler{
...
privateHello hello;
publicLogInvocationHandler(Hello hello) {
this.hello = hello;
}
@Override
publicObject invoke(Object proxy, Method method, Object[] args) throwsThrowable {
if("sayHello".equals(method.getName())) {
logger.info("You said: "+ Arrays.toString(args));
}
returnmethod.invoke(hello, args);
}
}
// 2. 然后在需要使用Hello的时候,通过JDK动态代理获取Hello的代理对象。
Hello hello = (Hello)Proxy.newProxyInstance(
getClass().getClassLoader(), // 1. 类加载器
newClass<?>[] {Hello.class}, // 2. 代理需要实现的接口,可以有多个
newLogInvocationHandler(newHelloImp()));// 3. 方法调用的实际处理者
System.out.println(hello.sayHello("I love you!"));
http://www.importnew.com/27772.html
网友评论