Spring mediatype.application_json_utf8말고 인코딩

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미설정
코드 추가 후 (UTF8 설정)
UTF8설정
  • Header에 UTF-8이 들어간 것을 확인할 수 있다.

  • WebApplicationContext는 DispatcherServlet 클래스에 의해 만들어진다.

    • DispatcherServlet이 직접 사용하는 컨트롤러를 포함한 웹 관련 빈을 등록하는 데 사용한다.
    • 독자적인 컨텍스트들을 가지며 root-context 내 빈 사용이 가능하다.
    • ApplicationContext를 확장한 구현체다.

다른 방법들

참고

results matching ""

    No results matching ""