- join point 에서 적용되는 특정 코드, 부가 기능
Advice의 순서
- 기본적으로 여러 advice가 있을 경우 순서가 보장되지 않는다.
- 순서를 보장받고 싶을 경우
org.springframework.core.annotation.@Order
를 적용해야 한다.
- 하지만 이 어노테이션도 advice 단위가 아닌 클래스 단위로 적용된다.
- 하나의 aspect에 여러 advice가 있을 때 이 adivce들의 순서를 보장할 수가 없는 것이다.
- 따라서 aspect를 별도의 클래스로 분리하여 관리하는 것이 좋다.
- 기존에는 xml 방식으로 지정했지만, AspectJ 라이브러리를 통해 어노테이션으로 advice 설정을 편하게 할 수 있게 되었다.
Advice 선언을 지원하는 어노테이션
- Spring AOP는 메서드 레벨만 지원하므로 Pointcut 시점 == 빈 메서드 호출 시점이다. 따라서 아래 advice 어노테이션을 통해서 pointcut을 함께 명시해줄 수도 있고, 따로 적어줄 수도 있다.
- 아래 어노테이션은 advice가 적용되는 시점을 특정해준다.
@Before
- join point 의 이전에 실행되도록 설정
- 따라서 타겟 객체의 메서드가 호출되기 전에 이 aspect의 advice가 실행된다.
- 기본적으로 리턴타입이 void이나 리턴값이 있더라도 상관은 없다.