상황 개인적으로 하는 프로젝트에서 AOP를 썼었다. Refresh token을 쓰고 있었고, 이를 레디스에 저장하고 있었다. 토큰 속에는 닉네임을 subject 로 가지고 있었다. 문제는 닉네임을 수정하면 리프레쉬 토큰에는 변경이 되지 않아서 로그인이 안 되는 것. 그래서 레디스 속 리프레쉬 토큰을 변경해주어야 했고, 변경된 리프레쉬 토큰을 응답 쿠키에 담아주어야 했다. 또 유저 삭제 시에도 리프레쉬 토큰을 레디스에서 삭제하고, 응답 쿠키도 삭제해야했다. 이를 AOP로 구현한 코드는 아래와 같다. 간략하게 설명하면,@Pointcut 으로 각각 닉네임 수정 시점, 유저 삭제 시점 을 지정해주었고,@Around 로 수정 직후, 삭제 직후에 리프레쉬 토큰 처리를 해주었다. @Slf4j(topic = "..
AOP
스프링 프레임워크는 3가지 특징인 IoC/DI, PSA, AOP 가 있는데, 그 중 AOP 에 대해 알아보자 AOP AOP는 Aspect Orient Programming (관점 지향 프로그래밍) 으로, 어떤 로직을 핵심 기능과 부가 기능으로 나누고, 이를 각각 모듈화를 하는 프로그래밍이다. 핵심 기능은 핵심 비즈니스 로직이고, 부가 기능으로는 핵심 로직을 수행하기 위해 공통적으로 필요한 기능들, 예를 들면 로깅, DB연결, 등이 있다. 만약 특정 유저의 요청과 응답 사이의 시간을 기록하고 싶다면 AOP를 적용하지 않는다면 다음과 같이 해야 할 것이다. @PostMapping("/products") public ProductResponseDto createProduct(@RequestBody Produc..