dynamicproxy.service.HelloService
package dynamicproxy.service;
public interface HelloService {
public void sayHello();
}
dynamicproxy.service.impl.HelloServiceImpl
package dynamicproxy.service.impl;
import dynamicproxy.service.HelloService;
public class HelloServiceImpl implements HelloService {
@Override
public void sayHello() {
System.out.println("hello everyone ... ");
}
}
dynamicproxy.handler.LogHandler
package dynamicproxy.handler;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class LogHandler implements InvocationHandler {
private Object target = null;
public LogHandler(Object target) {
this.target = target;
}
private void doBefore(){
System.out.println("do before ... ");
}
private void doAfter(){
System.out.println("do after ... ");
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
doBefore();
Object res = method.invoke(target, args);
doAfter();
return res;
}
}
dynamicproxy.test.Main
package dynamicproxy.test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import dynamicproxy.handler.LogHandler;
import dynamicproxy.service.HelloService;
import dynamicproxy.service.impl.HelloServiceImpl;
public class Main {
public static void main(String[] args) {
HelloService target = new HelloServiceImpl();
InvocationHandler handler = new LogHandler(target);
HelloService helloService = (HelloService) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler);
helloService.sayHello();
}
}