본문 바로가기
Spring

[Spring] AOP(Aspect Oriented Programming)에 대해서

by bkuk 2023. 4. 11.

AOP란?

AOP를 이해하는데 가장 중요한 핵심 개념이 바로 관심 분리이다. AOP에서는 메서드마다 공통으로 등장하는 로깅이나 예외, 트랜잭션 처리 같안 코드들을 횡단 관심이라고 한다. 이에 반해 사용자의 요청에 따라 실제로 수행되는 핵심 비즈니스 로직핵심 관심이라고 한다.

만약 이 두 관심을 완벽하게 분리할 수 있다면, 개발자가 구현하는 메서드에는 실제 비즈니스 로직만으로 구성할 수 있으므로, 더욱 간결하고 응집도 높은 코드를 유지할 수 있다. 

 

AOP 용어 간략 정리

  • 조인포인트(Joinpoint)
    • 클라이언트가 호출하는 모든 비즈니스 로직을 말함. 포인트컷으로 설정될 수 있는 메서드라고 이해하면 쉽다.( 포인트컷 대상 혹은 포인트컷 후보)
  • 포인트컷(Pointcut)
    • 필터링된 조인포인트를 의미한다. 포인트컷을 이용하면 메서드가 포함된 클래스와 패키지는 물론이고, 메서드 시그니처까지 정확하게 지정할 수 있다.
  • 어드바이스(Advice)
    • 횡단 관심에 해당하는 공통 기능의 코드를 의미한다. 독립된 클래스의 메서드로 작성된다.
    • 동작시점을 before, after, after-returning, after-throwing, around 등 다섯 가지로 지정 가능하다.
  • 위빙(Weaving)
    • 포인트컷으로 지정한 핵심 관심 메서드가 호출될 때, 어드바이스에 해당하는 횡단 관심 메서드가 삽입되는 과정을 의미한다.
    • 스프링에서는 런타임 위빙 방식만 지원한다.
  • 애스팩트(Aspect) 및 어드바이스(Advisor)
    • 애스팩트는 포인트컷과 어드바이스의 결합으로써, 어떤 포인트컷 메서드에 대해서 어떤 어드바이스 메서드를 실행할지 결정한다.

댓글