
@RestController 指定这是一个进行了路由映射的类,并且指定该类返回非视图数据,而不是视图!Spring 会对所有的类进行扫描,如果类加了注解 @RestController,Spring 才会去看这个类里面的方法有没有加 @RequestMapping 这个注解,当然他的作用不止这一点,后面详细讲!@RestController = @Controller + @ResponseBody,这是为了实现 "前后端分离" 而引入的,因为现在前端大部分不需要后端来做,所以后端只需要返回前端约定好的数据即可,所以现在一般都直接用 @RestController 来指定返回非视图数据,而单独使用 @Controller 的话则返回的是视图。@RestController 或 @ResponseBody返回值类型 | 返回 JSON 格式? | 示例结果 |
|---|---|---|
Map<String, ?> | ✅ 是 | JSON 对象 |
List<T> / 数组 | ✅ 是 | JSON 数组 |
Object | ✅ 是 | JSON 对象 |
String | ⚠️ 特殊处理 | 默认会被当成字符串文本返回,而不是 JSON |
@RestController
public class demo {
@RequestMapping("hello")
public String func() {
return "liren!";
}
}@ResponseBody
@RequestMapping("/returnjson")
public Map<String, String> returnjson() {
HashMap<String, String> table = new HashMap<>();
table.put("java", "good");
table.put("cpp", "not good");
table.put("redis", "not bad");
return table;
}3. 设置响应状态码,使用 HttpServletResponse 对象调用 setStatus() 即可。
4. 设置响应报头,其中有些报头,比如设置响应类型,可以使用注解 @RequestMapping 中的属性 produces,而其它报头需要通过 HttpServletResponse 对象调用 setHeader() 来设置。
5. 常见的响应格式方法如下所示:
场景类型 | 推荐返回方式 |
|---|---|
简单文本或标志返回("true"/"false") | ✅ String + produces="text/html" |
正常 REST 接口返回 JSON | ✅ @RestController + 返回对象/Map/List |
返回模板页面 | ✅ @Controller + return "xxx.html" |
要求精确控制响应头、状态码 | ✅ ResponseEntity<String> |

我们写一个 Java 实体类时,常常需要写一堆 Getter、Setter、构造方法、toString、equals、hashCode 等等,非常冗长,而 Lombok 可以 自动生成这些代码,你只需要写个注解!
注解 | 功能 |
|---|---|
@Getter / @Setter | 自动生成 getter/setter 方法 |
@ToString | 自动生成 toString() 方法 |
@EqualsAndHashCode | 自动生成 equals() 和 hashCode() 方法 |
@NoArgsConstructor | 自动生成无参构造器 |
@AllArgsConstructor | 自动生成全参构造器 |
@RequiredArgsConstructor | 自动生成包含 final 字段的构造器 |
@Data | 相当于同时加了:@Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor |
@Builder | 生成建造者模式的代码 |
@Slf4j | 自动生成日志对象(log),方便日志打印 |
可以通过该网站引入依赖:https://mvnrepository.com/artifact/org.projectlombok/lombok
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。