@ResponseBody 적용 안되는 문제
- 작성자 :
- 한*호
- 작성일 :
- 2022-08-16 10:54:13
- 조회수 :
- 2,047
- 구분 :
- 공통컴포넌트 / 3.6
- 진행상태 :
- 완료
Q
원인 찾았습니다.
혹시 저와 같은 상황이신 분들을 위해 삭제하지 않고 방법을 추가해 놓겠습니다.
추가 후에 다른 곳에서 문제가 발생하는지 여부는 확인해봐야겠네요.
egov-com-servlet.xml 에
<mvc:annotation-driven/> 를 추가하시면 됩니다.
======================================================================================================
프레임워크 버전은 3.10.0을 사용하고 있습니다.
=> 기존 사용 방식
egov-com-servlet.xml 설정을 보면 아래와 같이 설정되어있습니다.
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="contentType" value="text/html;charset=UTF-8"/>
</bean>
전자정부 공통 컴포넌트 기능의 Controller 에서 사용도 다음과 같이 사용을 하고 있습니다.
public ModelAndView sample() {
return new ModelAndView("jsonView");
}
==> 원하는 사용 방식
@ResponseBody를 사용하고자 합니다.
@ResponseBody
public Map sample() {
Map result = new HashMap();
result.put("code", 200);
result.put("message", "성공");
return result;
}
아래의 라이브러리를 추가하였습니다.
Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.3
Maven: com.fasterxml.jackson.core:jackson-core:2.13.3
Maven: com.fasterxml.jackson.core:jackson-databind:2.13.3
하지만 에러가 발생합니다.
모든 에러 로그를 Trace로 바꿔봐도 에러 메시지는 출력이 되지 않습니다.
Controller 에서 return 이전까지 디버깅 시에는 문제없습니다.
하지만 결과적으로는 응답을 처리하면서 500 에러 페이지로 빠집니다.
return 하면서 json 형식으로 컨버팅 하면서 문제가 발생하는 것으로 보여집니다.
스프링 4 버전에서는 위의 라이브러리만 추가하면 설정 없이 @ResponseBody를 사용할 수 있는 걸로 알고 있고,
전자정부 없이 스프링 4 버전을 사용할 때에는 특별한 설정 없이도 문제 없이 사용하였습니다.
전자정부의 springmvc 설정은 기존에서 대부분 변경 없이 사용 중입니다.
egov-com-access.xml
egov-com-interceptor.xml
egov-com-loginaop.xml
egov-com-servlet.xml
xml 설정을 전부 살펴봐도 원인을 못 찾겠네요.
도움을 요청 드립니다.
감사합니다.
혹시 저와 같은 상황이신 분들을 위해 삭제하지 않고 방법을 추가해 놓겠습니다.
추가 후에 다른 곳에서 문제가 발생하는지 여부는 확인해봐야겠네요.
egov-com-servlet.xml 에
<mvc:annotation-driven/> 를 추가하시면 됩니다.
======================================================================================================
프레임워크 버전은 3.10.0을 사용하고 있습니다.
=> 기존 사용 방식
egov-com-servlet.xml 설정을 보면 아래와 같이 설정되어있습니다.
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="contentType" value="text/html;charset=UTF-8"/>
</bean>
전자정부 공통 컴포넌트 기능의 Controller 에서 사용도 다음과 같이 사용을 하고 있습니다.
public ModelAndView sample() {
return new ModelAndView("jsonView");
}
==> 원하는 사용 방식
@ResponseBody를 사용하고자 합니다.
@ResponseBody
public Map sample() {
Map result = new HashMap();
result.put("code", 200);
result.put("message", "성공");
return result;
}
아래의 라이브러리를 추가하였습니다.
Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.3
Maven: com.fasterxml.jackson.core:jackson-core:2.13.3
Maven: com.fasterxml.jackson.core:jackson-databind:2.13.3
하지만 에러가 발생합니다.
모든 에러 로그를 Trace로 바꿔봐도 에러 메시지는 출력이 되지 않습니다.
Controller 에서 return 이전까지 디버깅 시에는 문제없습니다.
하지만 결과적으로는 응답을 처리하면서 500 에러 페이지로 빠집니다.
return 하면서 json 형식으로 컨버팅 하면서 문제가 발생하는 것으로 보여집니다.
스프링 4 버전에서는 위의 라이브러리만 추가하면 설정 없이 @ResponseBody를 사용할 수 있는 걸로 알고 있고,
전자정부 없이 스프링 4 버전을 사용할 때에는 특별한 설정 없이도 문제 없이 사용하였습니다.
전자정부의 springmvc 설정은 기존에서 대부분 변경 없이 사용 중입니다.
egov-com-access.xml
egov-com-interceptor.xml
egov-com-loginaop.xml
egov-com-servlet.xml
xml 설정을 전부 살펴봐도 원인을 못 찾겠네요.
도움을 요청 드립니다.
감사합니다.
환경정보
-
- OS 정보 : windows 11
- 표준프레임워크 버전 : 3.10.0
- JDK(JRE) 정보 : 1.8
- WAS 정보 : tomcat 8.5
- DB 정보 : mariadb
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
egov-com-servlet.xml 설정에서
MappingJackson2JsonView 대신
MappingJackson2HttpMessageConverter 설정을 추가한 후 진행해 보시기 바랍니다.
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</list>
</property>
감사합니다.
표준프레임워크 센터입니다.
egov-com-servlet.xml 설정에서
MappingJackson2JsonView 대신
MappingJackson2HttpMessageConverter 설정을 추가한 후 진행해 보시기 바랍니다.
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</list>
</property>
감사합니다.