Spring의 MessageSource를 사용하려고, message.properties 파일에 한글을 정의하고 나서, 테스트 코드를 실행하던 도중 한글 인코딩이 제대로 되지 않아서 발생했던 에러 해결방법을 정리하려고 한다. 상황 MessageSource 단위 테스트를 진행하기 위해서 아래와 같은 코드를 작성했고, messages.properties 파일은 다음과 같이 정의했다. // messages.properties test=테스트 @SpringBootTest public class MessageSourceTest { @Autowired private MessageSource messageSource; @Test void helloMessage() { String result = messageSourc..

Spring MVC의 요청 흐름을 아래의 그림으로 요약할 수 있고, 중간에 중요한 개념들을 정리하려고 한다. DispatcherServlet 프론트 컨트롤러 패턴을 구현할 실체이다. 클라이언트의 모든 Request를 접수하고, 다른 컴포넌트에 역할을 위임한다. 주로 HandlerMapping, HandlerAdapter, ViewResolver로 역할을 위임한다. HandlerMapping 특징 Request의 URL과 매칭 되는 Handler를 선택한다. HandlerMapping 인터페이스를 구현한 여러 구현체들이 있고, 구현체들의 우선순위를 기준으로 매칭 되는 Handler를 선택한다. 여러 구현체들이 있지만, 대표적으로 RequestMappingHandlerMapping과 BeanNameUrlHa..
HttpMessageConverter를 사용하면, JSON 데이터를 Http Message Body에서 직접 읽거나 쓰는 경우에 편리하다. @ResponseBody를 사용하는 경우 ViewResolver 대신에 HttpMessageConverter가 동작된다. 기본 문자 처리의 경우, StringHttpMessageConverter를 사용한다. 기본 객체 처리의 경우, MappingJackson2 HttpMessageConverter를 사용한다. byte [] 처리 및 기타 여러 가지의 HttpMessageConverter가 기본으로 등록되어 있다. HTTP 요청, 응답에 둘 다 사용 요청의 경우, 메시지를 읽어서 객체로 바꾼 다음 컨트롤러에 파라미터로 넘겨주는 역할은 한다. 응답의 경우, 컨트롤러에서 ..