스프링부트에서 AOP 구현은 프록시를 활용하며 @Aspect 어노테이션을 제공하여 구현 편의성을 제공해준다. 스프링부트에서 AOP 를 구현하기 위해선 @Aspect 에 대해 알아야 하며 이와 관련된 용어에 대해 숙지하고 있어야 한다. AOP 관련 용어 조인 포인트(Join point) 어드바이스가 적용될 수 있는 위치, 메소드 실행, 생성자 호출, 필드 값 접근, static 메서드 접근 같은 프로그램 실행 중 지점 조인 포인트는 추상적인 개념이다. AOP를 적용할 수 있는 모든 지점이라 생각하면 된다. 스프링 AOP는 프록시 방식을 사용하므로 조인 포인트는 항상 메소드 실행 지점으로 제한된다. 포인트컷(Pointcut) 조인 포인트 중에서 어드바이스가 적용될 위치를 선별하는 기능 주로 AspectJ 표..
springboot
AOP 가 무엇인지 알아보기에 앞서 AOP 가 등장하게된 배경에 대해 먼저 알아보자. 웹 어플리케이션 서버에서 흔히 사용되는 패턴인 MVC + Repository 패턴이다. 각 역할별 책임을 분담하여 레이어를 이루는 구조이다. 만약 위 구조에서 각 레이어에서 호출, 응답에 대해 로그를 남겨 추적하고 싶다면 어떻게 해야할까? (일반적으론 이런 경우 APM 이 사용되지만 배경 설명을 위해 로그를 예로 들었다.) 단순한 방법으론 위와 같이 각 레이어에 로그 추적 코드를 추가하는 방법이 있을것이다. 하지만 만약 로그 추적을 해야하는 파일의 갯수가 수백개인 경우에도 이렇게 작업을 해야할까? 할수야 있겠지만 매우 비효율적이고 관리하기 힘든 형태이다. 잘 살펴보면 로그 추적 로직은 공통 코드로서 유틸리티한 기능이기 ..