java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Springboot中Controller和RestController使用

Springboot中Controller和RestController的使用及区别

作者:IT小鸟鸟

文章总结了Spring框架中@Controller和@RestController的区别,包括它们的用途、工作机制、使用场景以及底层原理,文章指出,@Controller用于传统的SpringMVC应用,返回视图或数据(需@ResponseBody)

在 Spring 框架中,@Controller 和 @RestController 是用于处理 HTTP 请求的注解,但它们的用途和行为有显著区别:

1. 核心区别

@Controller

@RestController

2. 工作机制对比

@Controller

@Controller
public class MyController {
    @GetMapping("/page")
    public String showPage() {
        return "home"; // 返回视图 home.jsp(或类似)
    }

    @ResponseBody
    @GetMapping("/data")
    public User getUser() {
        return new User("Alice"); // 返回 JSON 数据
    }
}

@RestController

@RestController
public class MyRestController {
    @GetMapping("/api/user")
    public User getUser() {
        return new User("Bob"); // 自动转换为 JSON
    }
}

3. 使用场景

@Controller

@RestController

4. 底层原理

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {}

总结

特性@Controller@RestController
返回类型视图(默认)或数据(需 @ResponseBody)直接返回数据
适用场景传统 MVC 页面渲染RESTful API
依赖组件ViewResolverHttpMessageConverter
注解组合@Controller + @ResponseBody

根据项目需求选择注解:

需要页面渲染用 @Controller,纯 API 服务用 @RestController

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文