@RequestBody, spring will try to convert the content of the incoming request body to your parameter object on the fly.@ResponseBody, spring will try to convert its return value and write it to the http response automatically

@RequestMapping(value = "/bookcase")
public class BookCaseController 
    private BookCase bookCase;
    @RequestMapping(method = RequestMethod.GET)
    public BookCase getBookCase() {
        return this.bookCase;
    @RequestMapping(method = RequestMethod.PUT)
    public void setBookCase(@RequestBody BookCase bookCase) {
        this.bookCase = bookCase;

Depending on your configuration, spring has a list of HttpMessageConverters registered in the background. A HttpMessageConverters responsibility is to convert the request body to a specific class and back to the response body again, depending on a predefined mime type. Every time an issued request is hitting a @RequestBody or @ResponseBody annotation spring loops through all registered HttpMessageConverters seeking for the first that fits the given mime type and class and then uses it for the actual conversion.

Refer here