zoukankan      html  css  js  c++  java
  • Stomp与Jackson

      读取Stomp消息的类在StompDecoder中,org.springframework.messaging.simp.stomp.StompDecoder。

      Jackson把json转对象是在如下步骤中:

      1、org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite类中的resolveArgument(MethodParameter parameter, Message<?> message)方法,返回Object

      2、org.springframework.messaging.handler.annotation.support.PayloadArgumentResolver类中的resolveArgument(MethodParameter parameter, Message<?> message)方法中的Object target = this.converter.fromMessage(message, targetClass);

      3、调用org.springframework.messaging.converter.CompositeMessageConverter类的fromMessage(Message<?> message, Class<?> targetClass)方法,遍历本类中的所有converters,找到合适的结果并返回。

      4、调用org.springframework.messaging.converter.AbstractMessageConverter类中的fromMessage(Message<?> message, Class<?> targetClass)中的convertFromInternal(message, targetClass);方法

      5、convertFromInternal(message, targetClass);方法在org.springframework.messaging.converter.MappingJackson2MessageConverter中实例化(PS:也可以使用其他convert,只要spring支持即可):

    public Object convertFromInternal(Message<?> message, Class<?> targetClass) {
            JavaType javaType = this.objectMapper.constructType(targetClass);
            Object payload = message.getPayload();//这里可以看到取消息字节流
            try {
                if (payload instanceof byte[]) {
                    return this.objectMapper.readValue((byte[]) payload, javaType);//这里是转换的核心
                }
                else {
                    return this.objectMapper.readValue((String) payload, javaType);
                }
            }
            catch (IOException ex) {
                throw new MessageConversionException(message, "Could not read JSON: " + ex.getMessage(), ex);
            }
        }

      6、从这里开始调用fasterxml.jackson包对数据进行绑定。

      默认对json绑定到map,如果有对象的话则会把map转为对象。

  • 相关阅读:
    输入url后的加载过程~
    编写一个方法,求字符串长度~~~
    闭包 什么是闭包 为什么用闭包~~
    作用域链的理解~~
    谈谈javascript的基本规范~~~~
    html中datalist 是什么??????
    elementui中el-input联想搜索框
    js中数组对象去重的方法
    vue视频截图第一帧demo
    styled-components的基本使用
  • 原文地址:https://www.cnblogs.com/guangshan/p/4462934.html
Copyright © 2011-2022 走看看