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;
          }
       
      }
  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/zqzhen/p/12545944.html
Copyright © 2011-2022 走看看