@Restcontroller 객체 응답 실패
- 작성자 :
- 김*학
- 작성일 :
- 2022-05-30 14:30:45
- 조회수 :
- 2,881
- 구분 :
- 개발환경 / 3.7
- 진행상태 :
- 완료
Q
Controller 소스입니다.
@RestController
@RequestMapping("/api")
public class OpenController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping(value = "/user", method = RequestMethod.GET)
public ResponseEntity<Map<String, Object>> user(HttpServletRequest req) {
Map<String, Object> map = new HashMap<>();
map.put("test", "1");
try {
logger.info("user");
} catch (Exception e) {
e.printStackTrace();
}
return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);
}
}
해당 경로로 요청하면
5월 30, 2022 2:16:14 오후 org.apache.catalina.core.StandardWrapperValve invoke
심각: Servlet.service() for servlet [action] in context with path [/OpenApi] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.HashMap] with root cause
java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.HashMap
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:178)
(생략)
위와 같은 오류가 발생합니다.
pom.xml에 jackson-dataformat-xml, jackson-annotations, jackson-core, jackson-databind, jackson-module-jaxb-annotations 2.8.5 버전으로 추가했습니다.
dispatcher-servlet.xml에 message converter를 등록하라고 해서
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven>
위와 같이 설정했습니다.
spring boot에서는 정상 작동하는데 전자정부프레임워크로 옮기는 도중 객체 응답 시 실패하는 원인을 알고 싶습니다.
@RestController
@RequestMapping("/api")
public class OpenController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping(value = "/user", method = RequestMethod.GET)
public ResponseEntity<Map<String, Object>> user(HttpServletRequest req) {
Map<String, Object> map = new HashMap<>();
map.put("test", "1");
try {
logger.info("user");
} catch (Exception e) {
e.printStackTrace();
}
return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);
}
}
해당 경로로 요청하면
5월 30, 2022 2:16:14 오후 org.apache.catalina.core.StandardWrapperValve invoke
심각: Servlet.service() for servlet [action] in context with path [/OpenApi] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.HashMap] with root cause
java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.HashMap
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:178)
(생략)
위와 같은 오류가 발생합니다.
pom.xml에 jackson-dataformat-xml, jackson-annotations, jackson-core, jackson-databind, jackson-module-jaxb-annotations 2.8.5 버전으로 추가했습니다.
dispatcher-servlet.xml에 message converter를 등록하라고 해서
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven>
위와 같이 설정했습니다.
spring boot에서는 정상 작동하는데 전자정부프레임워크로 옮기는 도중 객체 응답 시 실패하는 원인을 알고 싶습니다.
환경정보
-
- OS 정보 : windows 10
- 표준프레임워크 버전 : spring 4.2.4
- JDK(JRE) 정보 : 1.8
- WAS 정보 : tomcat
- DB 정보 : -
- 기타 환경 정보 : -
A
안녕하세요.
표준프레임워크센터 입니다.
기재하신 내용으로 보아
대체로 문제는 없어 보입니다.
다음을 참고하여 다시한번 점검해 보시기 바랍니다.
pom.xml에 의존성을 추가합니다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.10.5</version>
</dependency>
jackson-annotations, jackson-core는 의존성에 의해 자동으로 추가되므로
굳이 추가하실 필요는 없어 보입니다.
다음 서블릿 빈 설정파일에
/src/main/webapp/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml
다음이 추가되었는지 확인합니다.
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter ">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" >
<property name="supportedMediaTypes" value="application/json" />
</bean>
</property>
</bean>
다음 Rest 기반 프로젝트를 참고하셔도
도움이 되실듯 합니다.
https://www.egovframe.go.kr/home/sub.do?menuNo=93
감사합니다.
표준프레임워크센터 입니다.
기재하신 내용으로 보아
대체로 문제는 없어 보입니다.
다음을 참고하여 다시한번 점검해 보시기 바랍니다.
pom.xml에 의존성을 추가합니다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.10.5</version>
</dependency>
jackson-annotations, jackson-core는 의존성에 의해 자동으로 추가되므로
굳이 추가하실 필요는 없어 보입니다.
다음 서블릿 빈 설정파일에
/src/main/webapp/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml
다음이 추가되었는지 확인합니다.
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter ">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" >
<property name="supportedMediaTypes" value="application/json" />
</bean>
</property>
</bean>
다음 Rest 기반 프로젝트를 참고하셔도
도움이 되실듯 합니다.
https://www.egovframe.go.kr/home/sub.do?menuNo=93
감사합니다.