2014-11-15 2 views
4

Serializable 인터페이스를 구현하려면 컨트롤러 메소드에서 매개 변수로 전달되고 @RequestBody 주석으로 표시되는 클래스가 있습니까?@RequestBody @ResponseBody annotations를 사용하여 객체를 직렬화해야합니까?

@ResponseBody 주석으로 표시된 반환 값 클래스에 대해 동일한 질문이 있습니다.

또한 Serializable 인터페이스가 필요하지 않은 이유에 대해 설명 드리며 매우 감사드립니다.

답변

4

그렇지 않습니다. @ResponseBody으로 주석 된 컨트롤러 메소드에서 인스턴스를 반환하면 인스턴스가 JSON에 직렬화된다고 말할 수 있습니다. 그러나 이러한 일련의 직렬화는 Serializable 인터페이스를 포함하는 Java 직렬화가 아닙니다.

@RequestBody@ResponseBody 주석은 Object로부터 JSON 또는 JSON에서 예를 들어, 변환을 수행하기 위해 구현 HttpMessageConverterRequestResponseBodyMethodProcessor를 사용하여 처리된다.

HttpMessageConverter 인터페이스를 보면 다음과 같은 서명이있는 canRead 메서드가 있습니다. boolean canRead(Class<?> clazz, MediaType mediaType);과 같이 generics를 사용하여 직렬화 가능한 클래스에만 바인딩되지는 않습니다.

소스 및 자세한 내용은

관련 문제