@Before : Advice that executes before a join point, but which does not have the ability to prevent execution flow proceeding to the join point (unless it throws an exception).
@AfterReturning : Advice to be executed after a join point completes normally.
@AfterThrowing : Advice to be executed if a method exits by throwing an exception.
@After : Advice to be executed regardless of the means by which a join point exits (normal or exceptional return).
@Around : Advice that surrounds a join point such as a method invocation.