You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot MVC控制器选择:普通MVC控制器应使用哪种注解?

Spring Boot MVC控制器选择与注解使用指南

核心结论

在你的Spring Boot 3.4.2(搭配Spring Framework 6.2.2)项目中:

  • Spring Boot MVC优先选用org.springframework.stereotype.Controller注解,这是现代Spring MVC的标准实现方式,完全适配Spring Boot的自动配置机制。
  • 普通MVC控制器同样使用@Controller注解;若控制器主要返回JSON/XML等响应体而非视图模板,可直接使用@RestController(该注解是@Controller + @ResponseBody的组合,简化开发)。

两种Controller的区别

1. org.springframework.web.servlet.mvc.Controller(接口)

这是Spring MVC早期的编程式控制器实现方式,需要手动实现接口并重写handleRequest方法,手动处理请求、构建响应:

public class OldStyleController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("viewName");
        mav.addObject("data", "example");
        return mav;
    }
}

这种方式繁琐、灵活性低,已被Spring官方逐步淘汰,仅用于兼容老旧项目,不推荐在Spring Boot中使用。

2. org.springframework.stereotype.Controller(注解)

这是Spring stereotype注解体系的一部分,通过标记类为Spring管理的控制器组件,结合@RequestMapping(或@GetMapping/@PostMapping等细分注解)定义请求映射,开发简洁高效:

@Controller
public class AnnotationStyleController {
    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello Spring Boot MVC!");
        return "hello-view"; // 返回视图名称
    }
}

如果是REST风格接口,使用@RestController更便捷:

@RestController
public class RestStyleController {
    @GetMapping("/api/data")
    public Map<String, String> getData() {
        return Map.of("key", "value"); // 直接返回JSON响应
    }
}

Spring Boot的自动配置会自动扫描并注册带有@Controller/@RestController注解的类,无需额外配置,完全契合Spring Boot的"约定大于配置"理念。

适配你的依赖配置

你的项目依赖Spring Boot 3.4.2和Spring Framework 6.2.2,这两个版本完全支持注解式控制器的所有特性,包括最新的请求映射注解、响应处理增强等,使用@Controller/@RestController是最优选择。

内容的提问来源于stack exchange,提问作者Stewart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:55:04