목록Spring Boot (2)
쟈미로그
서론 소프트웨어를 개발할 때, 핵심 비즈니스 로직 외에도 기능 동작에 필요한 것들을 개발해야한다. (ex. 로깅, 트랜잭션 등) 그런데 만약 이런 부가적인 기능들이 자주 사용되는 것이라면 어떻게 될까? 코드에는 비즈니스 로직 + 부가적인 기능들이 뒤섞여서 핵심 로직을 찾기 어렵게 된다.. AOP(관점 지향 프로그래밍)는 이런 상황에서 도움이 된다! AOP는 핵심 로직과 부가적인 기능으로 관심사를 분리하고, pointcut을 정의해서 관심사간에 코드를 침투하지 않고도 사용하길 원하는 코드가 적용되도록 한다. 1. 스프링의 AOP 스프링에서도 자체 AOP 프레임워크를 통해서 AOP를 지원한다. 스프링 AOP는 Proxy 기반으로 동작하는데, 이 프록시를 구현하는 방식이 2가지다. JDK Dynamic Pro..
서론 평소에 전역으로 예외를 처리해서 반환해줄 일이 있을 때면 @ControllerAdvice와 @HandlerException을 사용하곤했다. 많은 레퍼런스에서 이 방식을 사용하길래 쓰게 됐고, 자세한 동작원리는 모른 채 사용했다. 그렇게 예외처리 == @ControllerAdvice + @HandlerException을 사용하는 것 이라는 생각을 갖고 개발하다가 실수를 하게됐다. 이미 응답을 준 상황에서도 예외를 던지면 ControllerAdvice의 HandlerException가 잡아서 처리해줄 거라는 착각을 한 것..! 두 어노테이션의 동작 방식을 몰랐고, "예외 처리"를 왜 하는가에 대한 개념도 모호해서 이런 일이 발생했던 것 같다. (예외가 발생했을 때 왜 잡을까? 잡아서 클라이언트에게 보여..