java / expert
Snippet
Benutzerdefinierte AOP-Logik mit MethodInterceptor und ProxyFactory
Die direkte Verwendung der ProxyFactory ermöglicht eine manuelle AOP-Komposition, ohne auf Component-Scanning oder Annotationen angewiesen zu sein. Durch die Implementierung von MethodInterceptor erhalten Sie Zugriff auf die 'MethodInvocation', wodurch Sie Zielaufrufe dynamisch mit Querschnittsbelangen wie Performance-Monitoring oder Sicherheitsprüfungen umhüllen können.
snippet.java
1
2
3
4
5
6
7
8
9
10
11
12
public <T> T createSecureProxy(T target) {ProxyFactory factory = new ProxyFactory(target);factory.addAdvice((MethodInterceptor) invocation -> {long start = System.nanoTime();try {return invocation.proceed();} finally {System.out.println("Execution time: " + (System.nanoTime() - start));}});return (T) factory.getProxy();}
spring
Erklärung
1
ProxyFactory factory = new ProxyFactory(target);
Initialisiert eine Factory zum Erstellen eines JDK dynamischen Proxys oder CGLIB-Proxys für das Zielobjekt.
2
factory.addAdvice((MethodInterceptor) invocation -> { ... });
Fügt einen Interceptor hinzu, der Logik vor und nach dem eigentlichen Methodenaufruf ausführt.
3
return invocation.proceed();
Fährt mit dem nächsten Interceptor in der Kette oder der eigentlichen Zielmethode fort.