[오늘의 과제]
외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다.
장점 :
두 객체 간의 관계라는 관심사의 분리
두 객체 간의 결합도를 낮춤
객체의 유연성을 높임
테스트 작성을 용이하게 함
Spring 3.2 이전에는 Spring MVC 애플리케이션에서 예외를 처리하는 대표적인 두 가지 방식이 있었다. HandlerExceptionResolver 또는 @ExceptionHandler 애노테이션이었다. 해당 방법들은 분명한 단점이 있었다.
Spring 3.2 부터는 이전의 두 솔루션의 단점을 극복하고 통합 예외 처리를 유도하기 위해 @ControllerAdvice 애노테이션을 사용했다.
그리고 Spring 5부터 REST API에서 기본 예외를 처리하기 위해 ResponseStatusException을 제공한다.