3.16 @RestController注解
org.springframework.web.bind.annotation.RestController
注解本身使用@Controller
和@ResponseBody
注解。使用了@RestController
注解的类会被看作一个Controller
,并且该类中所有使用@RequestMapping
注解的方法都默认使用了@ResponseBody
注解。
@RestController
注解的源代码如下:
1 2 3 4 5 6 7 8 9
| @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller @ResponseBody public @interface RestController @AliasFor(annotation=Controller.class) String value() default ""; }
|
示例 @RestController注解的使用
创建一个RestControllerTest
项目,所有文件和配置基本和3.14节的ResponseBodyTest
项目一致。
BookController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package org.fkit.controller;
import java.util.ArrayList; import java.util.List; import org.fkit.domain.Book; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
@RestController @RequestMapping("/json") public class BookController { @RequestMapping(value = "/testRequestBody") public Object getJson() { List<Book> list = new ArrayList<Book>(); list.add(new Book(1, "书名称1", "书的作者1")); list.add(new Book(2, "书的名称2", "书的作者2")); return list; } }
|
BookController
使用了@RestController
注解,该类会被看成一个Controller
,同时该类中所有使用@RequestMapping
注解的方法都默认使用了@ResponseBody
注解, getJson
方法会将List
集合数据转换成JOSN
格式并返回客户端.
测试结果和ResponseBodyTest
项目的测试结果一致,此处不再赘述。
原文链接: 3.16 @RestController注解