似乎`@GetMapping`不能与`@Controller`一起使用,为什么呢?

问题描述 投票:0回答:1

根据 doc

@RestController
只是一个组合了 @Controller 和 @ResponseBody 的便捷注释,
@GetMapping
是一个组合注释,充当 @RequestMapping(method = RequestMethod.GET) 的快捷方式,这意味着
@GetMapping 
应该与
@RestController
@Controller

都能很好地配合使用

事实上

@GetMapping
仅适用于
@RestController

@RestController
public class HelloController {
  @GetMapping("/")
  public String hello(){
    return "hello";
  }
}

同时

@Controller
public class HelloController {
  @GetMapping("/")
  public String hello(){
    return "hello";
  }
}

不起作用。

我知道我可以使用

@RequestMapping(value = "/", method = RequestMethod.GET)
代替,我只是想知道为什么。有人可以提供线索吗?

spring-boot
1个回答
3
投票
@Controller
public class TestController {
    
     @GetMapping("/")
     @ResponseBody
    public String hello() {
        return "hello";
    }
}

添加@ResponceBody注解即可。

  • @Controller注解表明该类是一个“Controller”,它将处理客户端请求,以字符串格式返回视图名称。 例如一个 Spring MVC Web 控制器
  • @RestController 注解主要表明该类是 Restful Web 服务,默认情况下借助 @ResponseBody 语义以 JSON 或 XML 格式将数据直接返回给客户端,即为 REST API 提供服务。
© www.soinside.com 2019 - 2024. All rights reserved.