@RestController@Controller 是 Spring Framework 中用于定义控制器的注解,它们之间的主要区别在于它们的默认行为和使用场景。

  1. @Controller

    • @Controller 用于定义控制器类,通常配合 @RequestMapping 注解一起使用,用于处理 HTTP 请求和构建视图。
    • 控制器方法可以返回一个视图名,Spring MVC 会根据视图名解析并返回相应的视图页面。
    • 默认情况下,控制器方法使用 @ResponseBody 来将方法的返回值直接写入 HTTP 响应体中。
    @Controller
    public class MyController {
    
        @RequestMapping("/hello")
        public String hello() {
            return "hello"; // 返回视图名
        }
    }
    
  2. @RestController

    • @RestController@Controller 的特化版本,用于标记 RESTful 风格的控制器。
    • 默认情况下,@RestController 的每个方法都使用 @ResponseBody,表示该方法的返回值直接作为 HTTP 响应的内容,而不是视图。
    • 常用于构建 RESTful API,通常返回 JSON 或 XML 格式的数据。
    @RestController
    public class MyRestController {
    
        @RequestMapping("/api/hello")
        public String hello() {
            return "Hello, REST!";
        }
    }
    

总的来说,@Controller 用于传统的 Web 应用程序,返回的是视图页面;而 @RestController 用于构建 RESTful 风格的服务,返回的是数据(JSON 或 XML)。在使用时,根据应用的需求选择合适的注解。如果需要返回视图页面,使用 @Controller;如果需要返回数据,使用 @RestController

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.