public interface HelloService { void sayHello(String name); } public class HelloServiceImpl implements HelloService { public void sayHello(String name) { System.out.println("Hello, " + name + "!"); } } public class LoggingInterceptor implements Interceptor { public Object invoke(MethodInvocation invocation) throws Throwable { System.out.println("Before method: " + invocation.getMethod().getName()); Object result = invocation.proceed(); System.out.println("After method: " + invocation.getMethod().getName()); return result; } } public class ProxyFactory { public static HelloService createProxy(HelloService target, Interceptor interceptor) { return (HelloService) Proxy.newProxyInstance( target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { MethodInvocation invocation = new ReflectiveMethodInvocation(target, method, args); return interceptor.invoke(invocation); } }); } } public class App { public static void main(String[] args) { HelloService target = new HelloServiceImpl(); Interceptor interceptor = new LoggingInterceptor(); HelloService proxy = ProxyFactory.createProxy(target, interceptor); proxy.sayHello("Alice"); } } Before method: sayHello Hello, Alice! After method: sayHello


上一篇:
下一篇:
切换中文