포인트컷, 어드바이스, 어드바이저

현시기얌·2021년 11월 23일
0

AOP

목록 보기
5/19

포인트컷(Pointcut)

어디에 부가 기능을 적용할지, 어디에 부가 기능을 적용하지 않을지 판단하는 필터링 로직이다.
주로 클래스와 메소드 이름으로 필터링 한다.
이름 그대로 어떤 포인트(Point)에 기능을 적용할지 하지 않을지 잘라서(cut) 구분하는 것이다.

어드바이스(Advice)

프록시가 호출하는 부가 기능이다.
단순하게 프록시 로직이라 생각하면 된다.

어드바이저(Advisor)

하나의 포인트컷과 하나의 어드바이스를 가지고 있는 것이다.
포인트컷1 + 어드바이스1
즉 부가 기능 로직을 적용해야 하는데 포인트컷으로 어디에 적용할지 선택하고, 어드바이스로 어떤 로직을 적용할지 선택하는 것 즉 어디에 어떤 로직을 모두 알고 있는 것이 어드바이저이다.

쉽게 기억하기

  • 조언(Advice)을 어디(Pointcut)에 할 것인가?
  • 조언자(Advisor)는 어디(Pointcut)에 조언(Advice)을 해야할지 알고 있다.

역할과 책임

  • 포인트컷은 대상 여부를 확인하는 필터 역할만 담당한다.
  • 어드바이스는 깔끔하게 부가 기능 로직만 담당한다.
  • 둘을 합치면 어드바이저가 된다.
    스프링의 어드바이저는 하나의 포인트컷 + 하나의 어드바이스로 구성된다.

클라이언트가 프록시를 호출하면 Advisor에 있는 Pointcut을 호출한다.
Pointcut이 필터링 작용을 해서 Advice를 호출할지 말지 결정한다.

profile
현시깁니다

0개의 댓글