zoukankan      html  css  js  c++  java
  • @RestController

    • 使用@Controller时需要用@ResponseBody注释

      Spring 3.x 或使用@Controller情况下,在方法上使用@ResponseBody注释时,Spring会转换返回值并自动将其写入HTTP响应。Controller类中的每个方法都必须使用@ResponseBody进行注释。

      Spring有一个在后台注册的HttpMessageConverters列表。HTTPMessageConverter的职责是将请求主体转换为特定类并再次返回响应主体,具体取决于预定义的mime类型。每次发出请求命中@ResponseBody时,Spring都会遍历所有已注册的HTTPMessageConverters,寻找符合给定mime类型和类的第一个,然后将其用于实际转换。

      @Controller
      @RequestMapping("employees")
      public class EmployeeController {
          Employee employee = new Employee();
          @RequestMapping(value = "/{name}", method = RequestMethod.GET, produces = "application/json")
          public @ResponseBody Employee getEmployeeInJSON(@PathVariable String name) {
             employee.setName(name);
             employee.setEmail("employee1@genuitec.com");
          return employee; 
          }
      
          @RequestMapping(value = "/{name}.xml", method = RequestMethod.GET, produces = "application/xml")
          public @ResponseBody Employee getEmployeeInXML(@PathVariable String name) {
             employee.setName(name);
           employee.setEmail("employee1@genuitec.com");
             return employee; 
          }
      }

        

      注意@ResponseBody添加到返回值中的每个@RequestMapping方法,Spring将做两件事:

       

      1. 将<context:component-scan> 和  <mvc:annotation-driven /> 标记添加  到Spring配置文件中。
        • <context:component-scan> 激活注释并扫描包以在应用程序上下文中查找和注册bean。 
        • <mvc:annotation-driven/> 如果Jackson / JAXB库在类路径上,则添加对读写JSON / XML的支持。 
        • 对于JSON格式,包括jackson-databind jar,对于XML,包括项目类路径的jaxb-api-osgi jar。
    • 使用@RestController

      Spring 4.0引入了@RestController,这是一个控制器的专用版本,它是一个方便的注释,除了自动添加@Controller和@ResponseBody注释之外没有其他新魔法。

      通过使用@RestController批注对控制器类进行注释,您不再需要将@ResponseBody添加到所有请求映射方法中。@ResponseBody注释默认处于活动状态。

      要在我们的示例中使用@RestController,我们需要做的就是将@Controller修改为@RestController并从每个方法中删除@ResponseBody。结果类应如下所示:

      @RestController
      public class EmployeeController {
      
          Employee employee = new Employee();
      
          @GetMapping("/employees/{name}")
          public Employee getEmployeeInJSON(@PathVariable("name") String name) {
             employee.setName(name);
             employee.setEmail("employee1@genuitec.com");
             return employee;
          }
       
      }
  • 相关阅读:
    Linux的chattr与lsattr命令详解
    ls命令
    linux PS1
    which,whereis,locate,find
    linux下的文件结构
    Linux各种命令
    PHP将两个二维数组合并为一个二维数组的方法
    vagrant virtualbox VM inaccessible解决办法
    常用Mysql查询语句
    删除数组元素并重建索引的方法
  • 原文地址:https://www.cnblogs.com/zqzhen/p/12545944.html
Copyright © 2011-2022 走看看