Spring의 핵심기능 AOP

YUJIN LEE·2023년 6월 1일
0

개발log

목록 보기
115/149

Spring의 핵심 기능 AOP

AOP에는 2명의 형제가 있다.
??
AOP와 그의 형제인 Filter, Interceptor는 뭘까?
그리고 이건 무엇이 똑같고 무엇이 다를까?

우리는 비즈니스 로직을 위에서부터 아래로 짠다.
예를 들면 컨트롤러 -> 로그 -> 서비스 -> 이런식으로 탑다운 방식으로 하다가 마지막 단계에서 리턴값을 주고 메세지 없이 잘 받았어 하며 끝난다.
이렇게 소스를 짜다보면, 컨트롤러마다 로그를 찍는게 생김(중복코드가 생김)
근데 만약 컨트롤러의 로그 포맷이 바꼈을 때,
컨트롤러단마다, 로그 포맷을 정했다면 전부 다 로그 포맷을 바꿔줘야하는게 생긴다.
그래서 나온게 AOP Filter Interceptor이다.
행단의 관심사를 공통으로 묶어서 처리하는 디자인 패턴이다.
이거의 차이점은
진행되는 위치, 순서 이다.

Filter

일반적으로 스프링과 무관하게 전역적으로 처리해야하는 작업들을 Filter에서 처리

  • 공통된 보안 및 인증인가 관련 작업

Interceptor
클라이언트의 요청과 관련되어 전역적으로 처리해야하는 작업들을 처리.

  • 세부적인 보안 및 인증/인가 관련 작업
  • API 호출에 대한 로깅 또는 감사
  • Controller로 넘겨주는 정보의 가공
    - JWT Token 값을 순수하게 전달하는 것이 아니라, 파싱 후 전달

AOP
Filter/Interceptor와 다르게 URL 패턴이 아닌 주소, 파라미터, 어노테이션, 메서드, 컨트롤러 등 다양한 Pointcut이 지원하는 다양한 방식으로 호출 위치를 지정할 수 있다.

  • Method 또는 Controller 단위 별로 전체 공통 요소는 아니지만, 부분적 공통요소일 경우
  • 비즈니스 로직 상에서 좀 더 세밀하게 공통 요소를 처리해야하는 경우
profile
인정받는 개발자가 되고싶습니다.

0개의 댓글