Spring에서 http 기반의 메시지 처리는 HttpMessageConverter를 이용한다.

 

RestTemplate 클래스의 postxxx 메서드를 이용해서 파라미터를 전송하면 FormHttpMessageConverter를 사용하게됨.

FormHttpMessageConverter는 넘겨주는 파라미터 타입에 따라서 HttpMessageConverter 종류를 다르게 사용함.

 

한글 깨지는 문제는 StringHttpMessageConverter의 기본 캐릭터셋이 UTF-8 아님.

 

해결책은 아래 설정 참조.

 

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">

<property name="messageConverters">

<list>

<bean class="org.springframework.http.converter.FormHttpMessageConverter">

<property name="partConverters">

<list>

<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter">

</bean>

<bean class="org.springframework.http.converter.StringHttpMessageConverter">

<constructor-arg>

<bean class="java.nio.charset.Charset" factory-method="forName">

<constructor-arg value="UTF-8" />

</bean>

</constructor-arg>

<property name="writeAcceptCharset" value="false" />

</bean>

<bean class="org.springframework.http.converter.ResourceHttpMessageConverter">

</bean>

</list>

</property>

</bean>

<bean class="org.springframework.http.converter.StringHttpMessageConverter">

<constructor-arg>

<bean class="java.nio.charset.Charset" factory-method="forName">

<constructor-arg value="UTF-8" />

</bean>

</constructor-arg>

</bean>

</list>

</property>

</bean> 

 

 

 

 

 

 

 

 

아래부부은 <constructor-arg value="UTF-8" /> 이렇게 변경해도됨

 

 

<constructor-arg>

<bean class="java.nio.charset.Charset" factory-method="forName">

<constructor-arg value="UTF-8" />

</bean>

</constructor-arg> 

 

 

 

 

Java Code

 

List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();

FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();

formHttpMessageConverter.setCharset(Charset.forName("UTF-8"));

List<HttpMessageConverter<?>> partConverters = new ArrayList<HttpMessageConverter<?>>();

partConverters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));

partConverters.add(new ResourceHttpMessageConverter());

partConverters.add(new ByteArrayHttpMessageConverter());

formHttpMessageConverter.setPartConverters(partConverters);

messageConverters.add(formHttpMessageConverter);

 

messageConverters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));

 

RestTemplate restTemplate = new RestTemplate(messageConverters);

 

 



출처: http://bcuts.tistory.com/32 [Back to the BASIC]

번호 제목 글쓴이 날짜 조회 수
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 5083
84 @ConfigurationProperties 사용하기 황제낙엽 2025.10.23 1617
83 Spring Boot 에서 서버 로직의 역할별 애노테이션 구분 황제낙엽 2025.10.13 1411
82 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) file 황제낙엽 2023.12.23 2817
81 Spring Boot PetClinic Sample Application 황제낙엽 2023.12.21 2575
80 Eclipse, Spring Boot, Gradle, SVN 레거시(2019) 시스템 유지보수 환경 구축 file 황제낙엽 2023.11.14 1732
79 [시리즈 강좌] 스프링부트로 웹서비스 구축하기 황제낙엽 2023.07.13 1691
78 Spring Boot에서의 RESTful API 모듈 file 황제낙엽 2020.04.16 1896
77 [POST] Spring MVC 구조 분석 황제낙엽 2024.01.17 2053
76 Spring Framework 에서 사용하는 annotation 황제낙엽 2024.01.17 2093
75 Spring MVC configuration file 황제낙엽 2024.01.17 2041
74 [스프링 시큐리티 OAuth2] 강의 자료와 학습용 소스 file 황제낙엽 2024.01.15 1595
73 OAuth 2.0 Resource Server - Spring Security OAuth2.0 황제낙엽 2023.12.27 2016
72 Spring, JSP, Gradle, Eclipse 환경 구축[2] - 샘플 프로젝트 file 황제낙엽 2023.12.24 1922
71 Spring, JSP, Gradle, Eclipse 환경 구축[1] - 레퍼런스 조사 황제낙엽 2023.12.23 2056
70 spring-security-samples 황제낙엽 2023.12.22 1800
69 [Bard] Spring 과 Spring Boot의 차이 file 황제낙엽 2023.12.21 1803
68 Spring 과 Spring Boot의 차이 file 황제낙엽 2020.05.26 2308
67 Spring Security OAuth2.0 파헤치기 황제낙엽 2019.09.05 2079
66 Spring Security OAuth2구현 file 황제낙엽 2019.09.05 2208
65 Spring Security OAuth 황제낙엽 2019.09.05 2442