@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