Spring mediatype.application_json_utf8말고 인코딩
MediaType.APPLICATION_JSON_UTF8은 @Deprecated
사용이 권장되지 않음이다. 즉 언젠가 사라질 수 있다는 말이다.
크롬같은 메인 브라우저에서는 UTF8을 자동으로 받기때문이라고 설명되어있다. (아닐수도)
그렇다면 굳이 인코딩을 해야할까?
-> 테스트 코드를 작성 후 돌려보면 한글이 깨져서 테스트가 실패하는 경우가 있다. 그렇다면 어떻게 인코딩을 해야할까.
@Autowired
private WebApplicationContext wac;
@BeforeEach
void setUp() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(wac)
.addFilters(new CharacterEncodingFilter("UTF-8", true))
.alwaysDo(print())
.build();
}
- 테스트 전에
CharacterEncodingFilter
를 추가해주면 해결된다.
코드 추가 전 (UTF8 미설정) |
---|
코드 추가 후 (UTF8 설정) |
-
Header에
UTF-8
이 들어간 것을 확인할 수 있다. -
WebApplicationContext
는 DispatcherServlet 클래스에 의해 만들어진다.DispatcherServlet
이 직접 사용하는 컨트롤러를 포함한 웹 관련 빈을 등록하는 데 사용한다.- 독자적인 컨텍스트들을 가지며 root-context 내 빈 사용이 가능하다.
ApplicationContext
를 확장한 구현체다.