참조 : Spring Reference 6.1.1 AOP concepts

Before advice : join point 이 전에 실행이 되며 예외를 던지지 않는 이상 join point 이 후에 실행될 작업을 막을 방법이 없습니다.

After returning advice : join point가 정상적으로 완료된 후에 실행이 됩니다. 예외를 던지는 상황은 정상적인 상황에서 제외됩니다.

After throwing advice : 어떤 메소드가 예외를 던지면 실행이 됩니다.

Around advice : 메소드 호출과 같이 join point를 감싸는 Advice. 이 녀석은 advice 중에 가장 능력이 좋다. 메소드 호출 전과 후에 어떤 것을 실행할 수 있다. 또한 join point 이 후에 실행될 작업을 계속 수행할지 말지 정할 수 있다. 수행 하지 않을 때는 자신이 수행할 메소드 대신에 값을 반환하거나 예외를 던질 수 있다.

이 중에서 필요한 기능을 수행할 수 있는 가장 최소화된 능력을 발휘하는 Advice를 사용하는 것을 권장합니다. 예를 들어 어떤 메소드가 값을 반환한 이후 cache를 업데이트 하려고 할 때 Around advice를 사용할 수도 있겠지만 After returning advice를 사용합시다. 이렇게 가장 구체적인 Adivce 타입을 사용하는 것은 잠재적으로 발생할 에러를 방지 할 수 있습니다.