`

[转]@ResponseBody和Json序列化处理流程

阅读更多

原文地址:http://my.oschina.net/huanger/blog/373632

@ResponseBody的处理

  1. RequestMappingHandlerAdapter对handler进行调用,ServletInvocableHandlerMethod执行实际的调用.调用之后会使用HandlerMethodReturnValueHandlerComposite对返回值进行处理.

  2. HandlerMethodReturnValueHandlerComposite中其实包含了一个HandlerMethodReturnValueHandler的列表,遍历列表找出支持当前返回类型的(supportsReturnType),然后调用其handleReturnValue方法.

  3. RequestResponseBodyMethodProcessor就是上述列表中的一个HandlerMethodReturnValueHandler,其supportsReturnType如下:

    @Override
    public boolean supportsReturnType(MethodParameter returnType) {
        return ((AnnotationUtils.findAnnotation(returnType.getContainingClass(), ResponseBody.class) != null) ||
                (returnType.getMethodAnnotation(ResponseBody.class) != null));
    }
    

    这里出现了我们期待已久的@ResponseBody.

Json的序列化

 

  1. RequestResponseBodyMethodProcessor包含了从RequestMappingHandlerAdapter传过来的HttpMessageConverter列表.其handleReturnValue方法逻辑为:遍历HttpMessageConverter列表列表,找到可用的HttpMessageConverter(通过canWrite方法),然后调用HttpMessageConverterwrite的方法,对handler的结果进行处理.
  2. MappingJackson2HttpMessageConverter是第上一步列表中的一个HttpMessageConverter子类,负责json的序列化和反序列化.其中的序列化方法就是调用ObjectMapper进行处理的.
分享到:
评论

相关推荐

    spring boot @ResponseBody转换JSON 时 Date 类型处理方法【两种方法】

    本篇文章主要介绍了两种处理Spring Boot中`@ResponseBody`转换JSON时Date类型的方法:Jackson和FastJson。 ### Jackson处理Date类型 Jackson是Spring Boot默认的JSON库,它提供了多种方式来格式化Date字段。 ####...

    彻底根治Spring @ResponseBody JavaScript HTML特殊字符

    其中,`MappingJackson2HttpMessageConverter`是处理JSON的主要转换器,它使用Jackson库进行序列化。 - Jackson提供了配置选项来自动进行HTML转义。可以通过配置`ObjectMapper`来实现,例如: ```java ...

    spring MVC 对 ResponseBody返回json数据进行脱敏处理

    总之,通过利用Jackson的序列化功能,我们可以轻松地在Spring MVC中实现JSON数据的脱敏,确保敏感信息不被泄露,同时保持了良好的代码可读性和维护性。在实际项目中,还应注意根据业务需求灵活调整脱敏策略,以达到...

    SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)

    Spring MVC提供了多种`HttpMessageConverter`,包括处理XML的`Jaxb2RootElementHttpMessageConverter`和处理JSON的`MappingJackson2HttpMessageConverter`。系统会根据Content-Type自动选择合适的转换器。如果需要...

    SpringMVC使用@ResponseBody.rar

    - 对于大型项目,自定义`MessageConverter`以优化序列化性能或添加自定义头部信息。 7. **配置与扩展** 可以通过`WebMvcConfigurer`接口或`WebMvcConfigurerAdapter`类来配置`MessageConverter`的顺序、优先级,...

    对json格式的数据进行封装和转化,@responsebody注解所需的jar包JSON.rar

    Jackson是目前最流行的JSON库之一,提供了丰富的功能,包括对象到JSON的序列化和反序列化,以及JSON到对象的映射。 描述中提到的"springmvc进行Jason数据封装转化时可以即使用也是@responsebody",指的是在Spring ...

    SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(下)

    若要返回JSON数据,确保项目已引入Jackson库,并且返回类型可被Jackson序列化。 - 对于XML数据,Spring MVC默认使用了JAXB库(Jaxb2RootElementHttpMessageConverter)。返回类型需要有对应的XML注解(如`@...

    最新版本 jackson 2.8.2 jar与spring 4.x @ResponseBody配合使用

    在Spring MVC中,`@ResponseBody`注解就是依赖于`ObjectMapper`进行JSON序列化和反序列化的。 - **jackson-core**:这个模块提供了基础的JSON读写功能,如流式处理、解析器和生成器,是其他Jackson模块的基础。 - ...

    Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable

    此外,还需要注意异常处理,比如当`@RequestBody`无法将请求体反序列化时,或者`@ResponseBody`转换失败时,需要有合适的错误处理机制。 通过阅读源码,我们可以深入了解Spring是如何管理这些注解的,以及...

    json序列化jar包

    jackson是将普通数据与json数据互转的。 annotations是注解的意思。 springmvc框架整合AJAX使用@ResponseBody需要此包

    @ResponseBody 和 @RequestBody 注解的区别

    在Java Web开发中,Spring框架提供了许多注解来简化控制器层的编码,其中`@ResponseBody`和`@RequestBody`是两个关键的注解,它们在处理HTTP请求和响应时起着重要作用。 首先,`@RequestMapping`注解是Spring MVC中...

    springMvc注解之 ResponseBody和 RequestBody.docx

    在示例中,如果没有`@ResponseBody`,我们需要手动处理JSON序列化,就像`writeJson`方法那样。但是有了`@ResponseBody`,我们可以简化这个过程,让Spring MVC自动完成这个任务。 在使用`@RequestBody`接收多层嵌套...

    springMvc注解之@ResponseBody和@RequestBody详解

    Spring MVC注解之@ResponseBody和@RequestBody详解 在Spring MVC框架中,@ResponseBody和@RequestBody是两个非常重要的...通过使用这些注解,我们可以轻松地实现JSON序列化和反序列化,并提高Web应用程序的开发效率。

    SpringMVC中后台转换json格式

    首先,我们需要引入Jackson库来处理JSON序列化和反序列化。Jackson是Java中广泛使用的JSON处理库,包括三个主要的模块:`jackson-databind`、`jackson-core`和`jackson-annotations`。在提供的文件列表中,我们看到...

    springmvc操作json数据所需的jar包

    为了确保JSON序列化和反序列化时的性能和灵活性,我们还可以对Jackson库进行一些高级配置,例如忽略空值、自定义日期格式、添加自定义序列化和反序列化逻辑等。这可以通过创建一个`ObjectMapper`实例并在Spring配置...

    springMVC返回json数据需要的两个架包

    4. JSON序列化与反序列化:Jackson提供了多种方式来控制JSON序列化和反序列化的过程,例如: - 使用注解如`@JsonProperty`,`@JsonIgnore`,`@JsonInclude`等来定制序列化行为。 - 定制序列化和反序列化的逻辑,...

    Spring处理json,客户端处理json

    在IT行业中,Spring框架是Java领域的一个重要工具,主要用于...这涉及到了HTTP请求的处理、JSON的序列化和反序列化,以及客户端和服务器之间的数据交互。在实际开发中,还需要考虑错误处理、安全性和性能优化等问题。

    springmvc中json转换的jar

    `ObjectMapper`类在这个库中被完整实现,它提供了丰富的API来处理对象与JSON之间的转换,例如`readValue()`和`writeValueAsString()`方法,分别用于从JSON字符串反序列化对象和将Java对象序列化成JSON字符串。...

    SpringMVC JSON格式的读取和显示

    `@RequestBody`和`@ResponseBody`使得JSON数据与Java对象之间的转换变得简单,而Jackson库提供了丰富的功能来满足各种序列化需求。通过理解这些核心概念和实践,你就能在Spring MVC中有效地处理JSON格式的读取和显示...

    springmvc转json所需jar

    它提供了一系列API和模块,使得在Spring MVC中进行JSON序列化和反序列化变得简单高效。在Spring 3和Spring 4中,虽然核心框架保持了一定的兼容性,但对JSON处理的部分可能会有所不同,尤其是在依赖的Jackson版本上。...

Global site tag (gtag.js) - Google Analytics