이번에는 ControllerAdvice의 동작 과정이 어떻게 되는지 코드로 직접 살펴보도록 하겠습니다. 1. ControllerAdvice의 동작 과정 살펴보기 [ ControllerAdvice의 동작 과정 ] 디스패처 서블릿이 에러를 catch함 해당 에러를 처리할 수 있는 처리기(HandlerExceptionResolver)가 에러를 처리함 컨트롤러의 ExceptionHandler로 처리가능한지 검사함 ControllerAdvice의 ExceptionHandler로 처리가능한지 검사함 ControllerAdvice의 ExceptionHandler 메소드를 invoke하여 예외를 반환함 1. 디스패처 서블릿이 에러를 catch함 스프링에서 모든 요청을 가장 먼저 받는 곳은 디스패처 서블릿이다. 그러다보..
스프링 부트가 제공하는 테스트는 모두 통합 테스트입니다. 그러다보니 스프링부트 설정이나 테스트 코드를 작성할 때 주의해야 하는 부분들이 있습니다. 이번에는 테스트가 느려지지 않도록 하는 주의사항에 대해 살펴보겠습니다. 1. 스프링 부트 설정 시의 주의사항 [ 스프링 부트 설정 시의 주의사항 ] 스프링부트가 제공하는 테스트 어노테이션들은 모두 애플리케이션 컨텍스트를 만들어 조건에 맞는 빈들을 찾아서 등록한다. 그러다보니 애플리케이션 설정을 잘못하면 불필요하게 테스트 비용이 커지게 된다. 특정 기능을 위한 @Enable 어노테이션 빈 탐색을 위한 @ComponentScan 특정 기능을 위한 @Enable 어노테이션 스프링부트에서 테스트를 위한 애플리케이션 컨텍스트를 만들 때 설정의 기준이 되는 클래스는 @S..
스프링부트에서 테스트를 작성하기 위한 다양한 어노테이션(@SpringBootTest, @WebMvcTest, @DataJpaTest)들을 알아보도록 하겠습니다. 실제 테스트를 작성하는 방법은 이 포스팅을 참고해주세요. 1. 스프링부트 테스트를 위한 의존성 [ 스프링부트 테스트를 위한 의존성 ] 스프링부트는 서블릿 기반의 웹 개발을 위한 spring-boot-starter-web, 유효성 검증을 위한 spring-boot-starter-validation 등 spring-boot-starter 의존성을 제공하고 있다. 테스트를 위한 spring-boot-starter-test 역시 존재하는데, 다음과 같은 라이브러리들이 포함된다. JUnit 5: 자바 애플리케이션의 단위 테스트를 위한 사실상의 표준 테스트..
이번에는 공변과 불공변에 대해서 먼저 알아보고, 이후에 제네릭과 와일드카드에 대해 알아보도록 하겠습니다. 많은 분들이 어려워하는 제네릭인 만큼 쉽게 풀어서 설명하려고 노력했는데, 많은 도움이 되기를 바라겠습니다. 1. 공변과 불공변 [ 공변과 불공변 ] 제네릭과 와일드카드에 대해 이해하기 위해서 우리는 먼저 공변과 불공변에 대해 알아야 한다. 공변과 불공변은 각각 다음과 같다. 공변(covariant) : A가 B의 하위 타입일 때, T 가 T의 하위 타입이면 T는 공변 불공변(invariant) : A가 B의 하위 타입일 때, T 가 T의 하위 타입이 아니면 T는 불공변 대표적으로 배열은 공변이며, 제네릭은 불공변인데 이를 코드로 살펴보도록 하자. 예를 들어 배열의 요소들을 출력하는 메소드가 있다고 하..
이번에는 스프링이 제공하는 다양한 유틸성 클래스들에 대해서 알아보고자 합니다. 스프링은 다양한 유틸성 클래스들을 만들어 두었는데, 그 중에서도 우리가 사용할 가능성이 있는 유틸성 클래스들 몇가지에 대해 살펴보도록 하겠습니다. 1. 스프링이 제공하는 다양한 유틸성 클래스들 [ 문자열 처리를 위한 StringUtils ] 스프링은 간단한 문자열 처리를 위한 StringUtils를 제공하고 있다. 자주 사용되는 메소드들로는 다음과 같은 것들이 있으니, 필요에 따라 사용하도록 하자. hasLength: 해당 문자열이 비어있지 않은지 검사함(공백 문자열이면 true) hasText: 해당 문자열이 공백을 포함해 비어있지 않은지 검사함(공백 문자열이면 false) containsWhiteSpace: 해당 문자열이 ..