- Arawn's Dev Blog
- Outsider's Dev Story
- Toby's Epril
- Benelog
- NHN 개발자 블로그
- SK 플래닛 기술 블로그
- OLC CENTER
- 소프트웨어 경영/공학 블로그
- 모바일 컨버전스
- KOSR - Korea Operating System …
- 넥스트리 블로그
- 리버스코어 ReverseCore
- SLiPP
- 개발자를 위하여... (Nextree 임병인 수석)
- "트위터 부트스트랩: 디자이너도 놀라워할 매끈하고 직관…
- Learning English - The English…
- real-english.com
- 'DataScience/Deep Learning' 카테…
- Deep Learning Summer School, M…
- Deep Learning Courses
민서네집
[Spring Framework] JsonView 설정과 Spring 4.1에서 406 Error 대처법 본문
SpringMVC에서 Ajax와 JSON
http://www.nextree.co.kr/p11205/
여기가 가장 정리가 잘 되어 있었다. (감사합니다. 잘 보겠습니다.^^)
[목차]
1. response객체에 문자열 담기
2. ObjectMapper
3. @ResponseBody
4. jsonView
개인적으로는 @ResponseBody 에 담는 방법이 가장 간단하게 JsonView를 사용할 수 있는 방법이 아닐까 싶다.
Spring Framework 버전을 4.0.6.RELEASE 에서 가장 최근 버전인 4.1.6.RELEASE 으로 올렸더니,
@ResponseBody 를 이용한 JsonView의 응답이 406 Not Acceptable 에러가 난다.
406 Error - Not Acceptable
http://www.inmotionhosting.com/support/website/error-numbers/406-error
당황하며 구글링을 해 봤더니,
HTTP 406 Error Occured Upgrade to Spring MVC 4.1 Using JSON
위에 쓰인 바와 같이 pom.xml 에서
<!-- Json View -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
이렇게 사용하고 있었는데,
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
위와 같이 바꾸어서 해결했다.
그런데 이런 에러가 갑자기 발생한 원인과 jackson-mapper-asl 라이브러리를 jackson-databind 라이브러리로 대체해도 되는가 하는 의문이 남는다.
먼저 이런 에러가 발생한 원인은...
Migrating from earlier versions of the Spring Framework
https://github.com/spring-projects/spring-framework/wiki/Migrating-from-earlier-versions-of-the-Spring-Framework#libraries
Jackson 1.8/1.9
All Jackson v1 support is deprecated in favor of Jackson v2 and has been removed in Spring Framework 4.1:
JacksonObjectMapperFactoryBean
MappingJacksonHttpMessageConverter
MappingJacksonJsonView
MappingJacksonMessageConverter
for JMS
이제 갑자기 JsonView로 요청 시 HTTP Status 406 Error 가 난 원인은 알았다.
그런데 아직 jackson-mapper-asl 라이브러리를 jackson-databind 라이브러리로 대체해도 되는가 하는 의문이 남았다.
Jackson-mapper-asl 라이브러리를 mvnrepository.com 에서 찾아 보았다.
This artifact was moved to:
New Group com.fasterxml.jackson.core
New Artifact jackson-databind
라고 써 진 것이 눈에 띈다.
jackson-mapper-asl 라이브러리가 다른 Group의 jackson-databind 로 옮겨진 것이다.
이제 마음 놓고 pom.xml 을 수정하자.^^
jsonView Spring Framework 설정 파일 변경
Old Library
<!-- json result -->
<bean id="jsonView" class="net.sf.json.spring.web.servlet.view.JsonView">
<!-- <property name="contentType" value="application/json;charset=UTF-8"/> -->
<property name="contentType" value="text/html; charset=UTF-8" />
</bean>
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<!-- <property name="contentType" value="application/json;charset=UTF-8"/> -->
<property name="contentType" value="text/html;charset=UTF-8"/>
</bean>
나는 지금 Spring Framework Version 4.1.6 버전을 사용 중인데, Spring 설정 파일에 다음과 같이 net.sf.json.spring.web.servlet.view.JsonView 를 쓰기 위해
pom.xml 파일에 json-lib-ext-spring 라이브러리를 사용하는 것은 Spring 4.1.6 버전에서 여러 다른 문제를 일으킨다.
(아마도 이 라이브러리에 따라오는 종속된 라이브러리 때문인 것 같다.)
pom.xml 에 다음을 추가하지 말 것!
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib-ext-spring</artifactId>
<version>1.0.2</version>
</dependency>
'Spring' 카테고리의 다른 글
Spring Security 3.2 (0) | 2015.03.26 |
---|---|
Spring 에서 404 error page를 Thymeleaf로 처리하기. (0) | 2015.03.24 |
Invocation of destroy method 'close' failed on bean with name 'sqlSessionTemplate' (0) | 2014.12.23 |
스프링에서 SQL 로그 사용하기 (log4jdbc,log4sql) (0) | 2014.12.11 |
인터넷에 연결 안되면 Spring Framework 에러 발생. (2) | 2014.09.04 |