import org.aopalliance.aop.Advice;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class LoggingAdvice implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
String methodName = invocation.getMethod().getName();
System.out.println("Entering " + methodName);
Object result = invocation.proceed();
System.out.println("Exiting " + methodName);
return result;
}
}
public class Calculator {
public int add(int num1, int num2) {
return num1 + num2;
}
}
public class Main {
public static void main(String[] args) {
ProxyFactory proxyFactory = new ProxyFactory();
proxyFactory.setTarget(new Calculator());
proxyFactory.addAdvice(new LoggingAdvice());
Calculator proxyCalculator = (Calculator) proxyFactory.getProxy();
System.out.println(proxyCalculator.add(5, 3));
}
}