Spring Boot Filter와 AOP(관점지향 프로그래밍)
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* ... |