@Controller在Spring中曾经应用很久了,@RestController是在Spring 4.0呈现的,它是@Controller@ResponseBody两个注解的联合。

@Controller

经典的Spring controller类会应用@Controller注解标注。被@Controller标注的类为@Component类,并且能够被主动扫描发现。
@Controller注解个别会和@RequestMapping注解一起应用。

@Controller@RequestMapping("books")public class SimpleBookController {    @GetMapping("/{id}", produces = "application/json")    public @ResponseBody Book getBook(@PathVariable int id) {        return findBookById(id);    }    private Book findBookById(int id) {        // ...    }}

@RespondBody注解:将办法返回值主动转换为HttpResponse对象。

@RestController

@RestController简化了controller类的实现,它是@Controller@RespondBody的联合。

@RestController@RequestMapping("books-rest")public class SimpleBookRestController {        @GetMapping("/{id}", produces = "application/json")    public Book getBook(@PathVariable int id) {        return findBookById(id);    }    private Book findBookById(int id) {        // ...    }}

应用了@RestController@RespondBody就不再须要了。


The Spring @Controller and @RestController Annotations