⭐알게 된 점⭐
Spring AOP
- 핵심기능 : 각 API 별 수행해야 할 비즈니스 로직
- 부가기능 : 핵심기능을 보조하는 기능
- 모든 핵심기능의 Controller에 부가기능 코드를 추가했을 때, 핵심기능이 많다면 모든 동일한 내용의 코드의 추가가 필요함. 핵심기능이 나중에 추가된다면 항상 부가기능 추가를 신경써야 하는데 그것을 깜빡한다면, 신뢰성의 이슈가 발생함
- 모듈화
- AOP를 통해 부가기능을 모듈화
- 핵심기능과 분리해서 부가기능 중심으로 설계, 구현 가능
Spring AOP 어노테이션

1. @Aspect
- Spring 빈 클래스에만 적용 가능
2. 어드바이스 종류
- @Around: '핵심기능' 수행 전과 후 (@Before + @After)
- @Before: '핵심기능' 호출 전 (ex. Client 의 입력값 Validation 수행)
- @After: '핵심기능' 수행 성공/실패 여부와 상관없이 언제나 동작 (try, catch 의 finally() 처럼 동작)
- @AfterReturning: '핵심기능' 호출 성공 시 (함수의 Return 값 사용 가능)
- @AfterThrowing: '핵심기능' 호출 실패 시. 즉, 예외 (Exception) 가 발생한 경우만 동작 (ex. 예외가 발생했을 때 개발자에게 email 이나 SMS 보냄)
3. 포인트 컷
🐰 END
AOP를 활용한 예외처리를 해보았는데
전에 내가 작성한 예외처리보다 더 확실하고 효율적이게 예외처리를 할 수 있었다!