Spring Boot

Spring Boot Filter와 AOP(관점지향 프로그래밍)

Spring Boot AOP Filter Interceptor

AOP란 (Aspect Oriented Programming)

관점지향 프로그래밍입니다.

스프링 어플리케이션은 대부분 특별한 경우를 제외하고는 MVC 웹 어플리케이션에서 Web Layer, Business Layer, Data Layer로 정의되어 있습니다.

  • Web Layer: REST API를 제공하며, Client 중심의 로직 적용
  • Business Layer: 내부 정책에 따른 logic을 개발하며, 주로 해당 부분을 개발
  • Data Layer: 데이터베이스 및 외부와의 연동을 처리

Annotation 의미

어노테이션 설명
@Aspect 자바에서 널리 사용하는 AOP 프레임워크에 포함되며, AOP를 정의하는 class에 할당
@Pointcut 기능을 어디에 적용시킬지, 메소드? 어노테이션? 등 AOP를 적용시킬 지점을 설정
@Before 메소드를 실행하기 이전
@After 메소드가 성공적으로 실행 후, 예외가 발생되더라도 실행
@AfterReturning 메소드 호출 성공 실행 시 (Not Throws)
@AfterThrowing 메소드 호출 실패 예외 발생 (Throws)
@Around Before/After 모두 제어

PointCut Designators (PCD)

execution

반환타입, 타입, 메소드, 파라미터 기준으로 지정합니다.

execution([접근제한자-생략가능][리턴타입][패키지지정][클래스지정][메서드지정][매개변수지정])

각각의 패턴은 *으로 표현이 가능하며, ..은 0개 이상을 의미합니다.

접근제한자

접근제한자 설명 예시
public public 제한자 선택 execution(public ...
private private 제한자 선택 execution(private ...
생략 모든 접근제한자 execution(*set* ...