오봉이와 함께하는 개발 블로그

스프링 핵심 원리 - 고급편 > 포인트컷, 어드바이스, 어드바이저 소개 본문

BE/Spring

스프링 핵심 원리 - 고급편 > 포인트컷, 어드바이스, 어드바이저 소개

오봉봉이 2024. 9. 7. 23:35
728x90

스프링 핵심 원리 - 고급편 > 포인트컷, 어드바이스, 어드바이저 소개

  • 포인트컷
    • 어디에 부가 기능을 적용할지, 어디에 부가 기능을 적용하지 않을지 판단하는 필터링 로직
    • 주로 클래스와 메서드 이름으로 필터링
    • 이름 그대로 어떤 포인트에 기능을 적용할지 하지 않을지 잘라서 구분하는 것
  • 어드바이스
    • 프록시가 호출하는 부가 기능
    • 단순하게 프록시 로직이라 생각하면 된다.
  • 어드바이저
    • 단순하게 하나의 포인트컷과 어드바이스를 가지고 있는 것
    • 쉽게 이야기하면 포인트컷 1 + 어드바이스 1

정리하면 부가 기능 로직을 적용해야 하는데, 포인트컷으로 어디에? 적용할지 선택하고, 어드바이스로 어떤 로직을 적 용할지 선택하는 것이다. 그리고 어디에? 어떤 로직?을 모두 알고 있는 것이 어드바이저이다.

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

역할과 책임
이렇게 구분한 것은 역할과 책임을 명확하게 분리한 것이다.

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

참고로 해당 단어들에 대한 정의는 문맥상 이해를 위해 프록시에 맞춰서 설명하지만, 이후 AOP 부분에서 AOP에 맞춘 정리가 필요하다. 아래 그림도 이해를 돕기 위한 것이고, 실제 구현은 다를 수 있다.

image

 

출처: 김영한 지식공유자의 스프링 핵심 원리 고급편

728x90
Comments