@Controller 是 Spring MVC 中标识控制器类的注解,用于处理 Web 请求,是 @Component 的特化形式,需配合 @RequestMapping 等映射注解使用,返回 String 表示视图名,配合 @ResponseBody 或使用 @RestController 可返回 JSON 数据。

@Controller 是 Spring MVC 中用于标识控制器类的核心注解,它告诉 Spring 容器:这个类负责处理 Web 层的请求,属于 MVC 架构中的“C”(Controller)部分。
@Controller 的基本用法
只需在类名上方添加 @Controller 注解,Spring 就会将其识别为控制器,并在启动时扫描注册为 Bean。它本质上是 @Component 的一种特化形式,因此也具备组件扫描和依赖注入能力。
- 必须配合 @RequestMapping(或其派生注解如 @GetMapping、@PostMapping)使用,否则无法响应任何请求
- 不需要继承特定父类或实现接口,纯 POJO 即可
- 通常与 @Autowired 配合使用,注入 Service、Repository 等其他 Bean
配合请求映射注解定义接口路径
@Controller 本身不指定路径,需搭配 @RequestMapping 或更具体的注解来声明 URL 映射规则。推荐优先使用语义更清晰的派生注解。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- @GetMapping("/users") → 处理 GET /users 请求
- @PostMapping("/users") → 处理 POST /users 请求
- @PutMapping("/users/{id}") → 处理 PUT /users/123 请求,支持路径变量
- 类级别 @RequestMapping("/api") 可作为所有方法的统一前缀
返回值类型决定响应行为
方法返回值影响 Spring 如何处理响应:
立即学习“Java免费学习笔记(深入)”;
- 返回 String(如 "user/list"):默认视为逻辑视图名,交由 ViewResolver 解析为页面(如 JSP、Thymeleaf 模板)
- 返回 ResponseEntity> 或 @ResponseBody 注解的方法:直接序列化为 JSON/XML,适合 RESTful 接口
- 返回 void 且有 HttpServletResponse 参数:手动写响应体,较少用
与 @RestController 的区别
@RestController = @Controller + @ResponseBody(作用于类级别),所有方法默认返回 JSON 数据,无需每个方法加 @ResponseBody。若项目以 API 为主,建议直接用 @RestController;若需混合视图渲染和数据接口,则保留 @Controller 并按需添加 @ResponseBody。

















