全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-18 5 分钟 ✍️ juanwangdev

Spring MVC @Controller注解

@Controller 用于声明一个类为 Spring MVC 控制器,会被组件扫描自动注册为 Bean。

基本用法

Java
@Controller
public class HomeController {

    @GetMapping("/")
    public String home() {
        return "home";
    }

    @GetMapping("/about")
    public String about() {
        return "about";
    }
}

注解组合

注解组合关系
@Controller@Component + 语义标识
@RestController@Controller + @ResponseBody

类级别 @RequestMapping

Java
@Controller
@RequestMapping("/user")
public class UserController {

    @GetMapping("/list")
    public String list() {
        return "user/list";
    }

    @GetMapping("/{id}")
    public String detail(@PathVariable Long id) {
        return "user/detail";
    }
}

组件扫描配置

Java
@Configuration
@ComponentScan("com.example.controller")
public class WebConfig implements WebMvcConfigurer {
    // ...
}

与 @RestController 对比

Java
// @Controller - 返回视图
@Controller
public class PageController {
    @GetMapping("/page")
    public String page() {
        return "page"; // 返回视图名
    }
}

// @RestController - 返回数据
@RestController
public class ApiController {
    @GetMapping("/api/data")
    public Data data() {
        return new Data(); // 返回 JSON
    }
}

注解属性

@Controller 本身无特殊属性,继承自 @Component:

元注解说明
@Component标记为 Spring 组件
value指定 Bean 名称(可选)
Java
@Controller("userCtrl")
public class UserController {
    // Bean 名称为 userCtrl
}

@Controller 默认是单例,多线程环境下不要使用成员变量存储请求状态。

要点总结

  • @Controller 声明控制器类,会被组件扫描识别
  • 配合 @RequestMapping 实现请求映射
  • 返回 String 表示视图名
  • REST API 使用 @RestController 更方便

📝 发现内容有误?点击此处直接编辑

← 上一篇 Spring MVC @ControllerAdvice注解
下一篇 → Spring MVC @ExceptionHandler注解
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库