0%

3.16 @RestController注解

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;

// 该类会被看成一个Controller
@RestController
@RequestMapping("/json")
public class BookController
{
// 同时该类中所有使用@RequestMapping注解的方法都默认使用了@ResponseBody注解,
// 所以getJson方法会将List集合数据转换成JSON格式并返回客户端。
@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注解