[Spring] 스프링 AOP

U-Vin Lee·2022년 1월 4일
1

Study-Spring

목록 보기
2/3
post-thumbnail

<스프링 AOP>

1. AOP란?

  • 응집도와 관련된 기능

  • 부가적인 공통 코드들을 효율적으로 관리

  • 관심 분리

  • 횡단관심(Crosscutting Concerns) : AOP에서 메소드마다 공통으로 등장하는 로깅이나 예외, 트랜잭션 처리 같은 코드들을 말함.

  • 핵심관심(Core Concerns) : 사용자의 요청에 따라 실제로 수행되는 핵심 비즈니스 로직.

  • OOP의 한계를 극복

** OOP"Object-Oriented Programming"의 약자로, 횡단 관심에 해당하는 공통코드를 완벽하게 독립적인 모듈로 분리해내기가 어렵다는 단점이 있다.

OOP는 모듈화가 뛰어난 언어이지만, 공통모듈에 해당하는 Advice 클래스 객체를 생성하고 공통 메소드를 호출하는 코드가 비즈니스 메소드에 있다면 핵심관심과 횡단관심을 완벽하게 분리할 수 없다.

-> AOP는 이런 OOP의 한계를 극복한다.


2. AOP 용어 정리

  • 조인포인트(Joinpoint)
    클라이언트가 호출하는 모든 비즈니스 메소드
    ex) BoardServiceImpl이나 UserServiceImpl 등의 모든 메서드
    조인포인트는 다음에 설명할 ‘포인트컷 대상’ 또는 ‘포인트컷 후보‘ 라고도 함
    조인포인트 중에서 포인트컷이 선택됨.

  • 포인트컷(Pointcut)
    필터링 된 조인포인트
    수많은 비즈니스 메소드 중, 원하는 특정 메소드에서만 횡단 관심에 해당하는 공통 기능을 수행시키기 위한 것.


  • 첫번째 포인트 컷은 리턴타입과 매개변수를 무시하고 com.mirim.biz 패키지로 시작하는 클래스 중에서 이름이 Impl로 끝나는 클래스의 모든 메소드를 포인트 컷으로 설정한다.

  • 두번째는 get으로 시작하는 메소드만 포인트컷으로 설정한다.

  • 어드바이스(Advice)
    횡단관심에 해당하는 공통 기능의 코드를 의미, 독립된 클래스의 메소드로 작성.
    어드바이스로 구현된 메소드가 언제 동작할지 스프링 설정파일을 통해서 지정.
    비즈니스 로직 동작 시점 조절(before, after, after-returning, after-throwing, around)
    ex) commit의 수행 시점
  • 위빙(Weaving)
    포인트컷으로 지정한 핵심 관심 메소드가 호출될 때, 어드바이스에 해당하는 횡단 관심 메소드가 삽입되는 과정.
    위빙을 통해서 비즈니스 메소드를 수정하지 않고도 횡단관심에 해당하는 기능을 추가하거나 변경이 가능.
    컴파일 타임 위빙, 로딩타임 위빙, 런타임 위빙 등이 있다.
    스프링에서는 런타임 위빙 방식만 지원한다.

※ 정리!

사용자는 시스템을 사용하면서 자연스럽게 비즈니스 컴포넌트의 여러 조인 포인트(①)를 호출
이때 특정 포인트컷(②)으로 지정한 메소드가 호출되는 순간, 어드바이스(③)객체의 어드바이스 메소드가 실행
이 어드바이스 메소드의 동작 시점을 5가지로 지정할 수 있으며,
포인트 컷으로 지정한 메소드가 호출될 때, 어드바이스 메소드를 삽입하도록 하는 설정을 애스팩트(④)라고 한다.
이 애스팩트 설정에 따라 위빙(⑤)이 처리된다.

profile
포기하지 않고 끝까지 노력하는, 초보 개발자입니다.

0개의 댓글