原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处
上章讲到了@RestController注解,该注解是对@Controller注解的增强,处理标记控制器,还可以让类下所有的方法都返回json格式的数据。有人会问了:我并不是控制器下每个方法都要返回json啊,我有可能要返回渲染页面啥的怎么办?不用担心,接下来要讲到的@ResponseBody就是解决方案。
在上章基础之上,我们改回@Controller,然后在类上加上一个@ResponseBody注解。
@Controller
@RequestMapping(value = "/json")
@ResponseBody
public class JsonController {
    @RequestMapping(value = "/test")
    public String jsonTest(){
        return "dayaoguai";
    }
}
运行效果一样
我们再改成注解到类上面,为了有区别,我们再写一个同样功能的:
@Controller
@RequestMapping(value = "/json")
public class JsonController {
    @RequestMapping(value = "/test")
    @ResponseBody
    public String jsonTest(){
        return "dayaoguai";
    }
    @RequestMapping(value = "/test1")
    public String jsonTest1(){
        return "dayaoguai";
    }
}
访问test:
访问test1:
由上述实验可以看出我们的@ResponseBody注解的作用就是返回json格式的内容。而@RestController其实就是@Controller和@ResponseBody的结合。我们来对比一下@Controller和@RestController的源码:



@RequestMapping(value = "/jsonParam",method = RequestMethod.POST)
  public void jsonParam(String name){
      System.out.println(name);
  }




@RequestMapping(value = "/jsonParam",method = RequestMethod.POST)
  public void jsonParam(@RequestBody String name){
      System.out.println(name);
  }




总结:
老规矩,献上源码:https://share.weiyun.com/93cc277170716b0c8f9dc36bbf9f30de