public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class LoggingAdvice implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
System.out.println("Before executing method: " + invocation.getMethod().getName());
Object result = invocation.proceed();
System.out.println("After executing method: " + invocation.getMethod().getName());
return result;
}
}
import org.aopalliance.aop.Advice;
import org.aopalliance.intercept.MethodInterceptor;
import java.lang.reflect.Proxy;
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
Advice advice = new LoggingAdvice();
MethodInterceptor interceptor = (MethodInterceptor) advice;
Calculator proxyCalculator = (Calculator) Proxy.newProxyInstance(
calculator.getClass().getClassLoader(),
calculator.getClass().getInterfaces(),
interceptor
);
int result = proxyCalculator.add(5, 3);
System.out.println("Result: " + result);
}
}
Before executing method: add
After executing method: add
Result: 8