首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【SpringBoot】RestController && ResponseBody && Lombok

【SpringBoot】RestController && ResponseBody && Lombok

原创
作者头像
lirendada
发布2026-05-30 11:53:38
发布2026-05-30 11:53:38
20
举报
文章被收录于专栏:JavaJava

响应

  1. @RestController 指定这是一个进行了路由映射的类,并且指定该类返回非视图数据,而不是视图
    1. Spring 会对所有的类进行扫描,如果类加了注解 @RestControllerSpring 才会去看这个类里面的方法有没有加 @RequestMapping 这个注解,当然他的作用不止这一点,后面详细讲!
    2. 实际上 @RestController = @Controller + @ResponseBody,这是为了实现 "前后端分离" 而引入的,因为现在前端大部分不需要后端来做,所以后端只需要返回前端约定好的数据即可,所以现在一般都直接@RestController 来指定返回非视图数据,而单独使用 @Controller 的话则返回的是视图
  2. 什么情况下响应的是 json 格式❓❓❓
    1. 控制器加了 @RestController@ResponseBody

    返回值类型

    返回 JSON 格式?

    示例结果

    Map<String, ?>

    ✅ 是

    JSON 对象

    List<T> / 数组

    ✅ 是

    JSON 数组

    Object

    ✅ 是

    JSON 对象

    String

    ⚠️ 特殊处理

    默认会被当成字符串文本返回,而不是 JSON

    代码语言:javascript
    复制
    @RestController   
    public class demo {
        @RequestMapping("hello")
        public String func() {
            return "liren!";
        }
    }
    代码语言:javascript
    复制
    @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() 即可。

  1. 注意:状态码并不影响响应页面的展示!

4. 设置响应报头,其中有些报头,比如设置响应类型,可以使用注解 @RequestMapping 中的属性 produces,而其它报头需要通过 HttpServletResponse 对象调用 setHeader() 来设置。

5. 常见的响应格式方法如下所示:

场景类型

推荐返回方式

简单文本或标志返回("true"/"false")

✅ String + produces="text/html"

正常 REST 接口返回 JSON

✅ @RestController + 返回对象/Map/List

返回模板页面

✅ @Controller + return "xxx.html"

要求精确控制响应头、状态码

✅ ResponseEntity<String>

总结

Lombok

我们写一个 Java 实体类时,常常需要写一堆 GetterSetter、构造方法、toStringequalshashCode 等等,非常冗长,而 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

代码语言:javascript
复制
<!-- 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 响应
  • 总结
  • Lombok
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档