Controller层注解详解

可根据右边目录快速浏览

@Controller

处理http请求,在对应的方法上视图解析器可以解析return中的jsp或html页面,并且跳转到相应页面

@RestController

在默认情况下,使用了 @RestController 注解即可将返回的数据结构转换成 Json 格式

@RestController注解相当于@ResponseBody + @Controller合在一起的作用(好吧我感觉我自己在讲废话,是本书上都这么写)

So想理解@RestController我们就要点进去看一下该注解都包含了哪些东西。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

可以看到 @RestController注解包含了原来的 @Controller@ResponseBody 注解,@ResponseBody注解是将返回的数据结构转换为 Json 格式。所以在默认情况下,使用了 @RestController 注解即可将返回的数据结构转换成 Json 格式

@GetMapping

用于将HTTP GET请求映射到特定处理程序方法的注释。

里面最重要的就是这一句@RequestMapping(method = {RequestMethod.GET})

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
    method = {RequestMethod.GET}
)
public @interface GetMapping {

@PostMapping

用于将HTTP POST请求映射到特定处理程序方法的注释。

里面最重要的就是这一句@RequestMapping(method = {RequestMethod.POST})可以看出@GetMapping和@PostMapping的区别并不大

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
    method = {RequestMethod.POST}
)
public @interface PostMapping {

@RequestMapping

当你还在犹豫用@GetMapping还是@PostMapping时用他们爸爸(@RequestMapping)就对了

@PathVariable

只支持一个属性value,类型是为String,代表绑定的属性名称。默认不传递时,绑定为同名的形参。

参考

@PathVariable注解使用

@RequestMapping与@GetMapping和@PostMapping区别

原文地址:https://www.cnblogs.com/south-wood/p/12741091.html