Service.java


ServiceImpl.java


LoggingAdvice.java


TimeCheckAdvice.java


AopTest01.java


aop01.xml


결과


AroundAdvice를 구현한 메소드는 org.aspectj.lang.ProceedingJoinPoint를 반드시 첫 번째 파라미터로 지정해야함(두번째로 지정해도 않됨.. 무조건 첫번째로 지정해야함). 그렇지 않으면 스프링은 예외를 발생시킨다.
AroundAdvice를 구현한 메소드는 ProceedingJoinPoint의 proceed() 메소드를 호출함으로써 프록시 대상 객체의 실제 메서드를 호출하게 된다. 만약 proceed() 메서드를 호출하지 않으면 대상 객체의 메서드(비지니스 로직)를 실행하지 않게 된다.



proceed()를 호출하지 않았을 경우

TimeCheckAdvice.java


결과


proceed()를 호출하지 않았을 경우의 결과를 보면 해당 객체의 비지니스 로직 부분이 실행되지 않은 것을 알 수 있다.
따라서 aop:around로 advice를 적용할 경우는 반드시 proceed()를 호출해 줘야 한다.

+ Recent posts