Spring documentation에 따르면이 주석은 메서드 반환 값이 웹 응답 본문에 바인딩되어야 함을 나타냅니다. 나는 그것을 이해하고, 나는 이것을 나의 ajax 호출에 사용했다. 그러나 최근에 주석을 사용하지 않는 코드를 발견했습니다.컨트롤러 작업에 @ResponseBody를 추가해야하는 이유는 무엇입니까?
내 질문에 실제로 주석이없는 이유는 무엇입니까?
Spring documentation에 따르면이 주석은 메서드 반환 값이 웹 응답 본문에 바인딩되어야 함을 나타냅니다. 나는 그것을 이해하고, 나는 이것을 나의 ajax 호출에 사용했다. 그러나 최근에 주석을 사용하지 않는 코드를 발견했습니다.컨트롤러 작업에 @ResponseBody를 추가해야하는 이유는 무엇입니까?
내 질문에 실제로 주석이없는 이유는 무엇입니까?
주석이 없으면 다른 프로세스가 수행됩니다. 반환 유형 (you can find the defaults in this document)에 따라 응답이 다르게 생성됩니다. 당신의 반환 형식 인 경우
예를 들어, String
, 다음, 기본적으로, 반환 값은 View
이름으로 해결 될 것입니다하는 ViewResolver
는/포함/해결하기 위해 시도하고 View
객체를 생성하고, RequestDispatcher
을 전달합니다 것입니다 (jsp
)로 리디렉션하여 Servlet
컨테이너가 응답 생성을 처리 할 수 있도록합니다.
반환 유형을 처리하는 실제 인터페이스는 HandlerMethodReturnValueHandler
이며 각 유형에 대해 많은 구현이 있습니다. See here for more information.
두 경우 모두 반환 유형은 ModelAndView입니다. – 0x56794E
또는'void '를 반환하고'PrintWriter'를 컨트롤러 메서드에 삽입하고 응답 본문을 스트림에 쓸 수 있습니다. ** 비슷한 ** 행동을 효과적으로 유도합니다. –
@ abcXYZ 내 편집 및 링크 된 답변보기. 'ModelAndView'를위한 특별한 핸들러가 있습니다. '@ResponseBody'와'ModelAndView'를 리턴하는 경우, 그것은 어떤 핸들러가 우선 순위에 의존하는지에 달려 있습니다. –