美文网首页
dubbo rest 添加@JsonIgnore 无效的问题,替

dubbo rest 添加@JsonIgnore 无效的问题,替

作者: maxbin | 来源:发表于2018-03-05 14:48 被阅读500次

    问题描述

    在使用dubbo中间件进行微服务开发的时候,使用了rest+json的方式(当当网的dubbox),当对象序列化和反序列化的时候,如果序列化的对象中拥有的属性在反序列化的对象中不存在,会报错,无法调用,在对象上加@JsonIgnoreProperties注解也不起作用的

    问题发生的原因

    1. dubbo默认使用的json版本是fastjson 1.9的,在新版本的fastjson(2.+以后)中,两个版本的jar包的包名已经变更了,如果是加上注解忽略序列化中不存在的属性可以将1.9和2.0以后的两个注解都加上,暂时性的解决了问题
    2. 很多子项目已经使用了新的fastjson版本,在加两个版本注解的解决方案下一是代码不优雅,二容易让人迷惑;因此我们就将dubbo中的fastjson版本替换到2.+以上的

    解决方案

    用高版本的fastjson替换项目中的低版本json

    • 修改pom.xml文件,将2.+版本的json依赖导入进来
    <jackson.version>2.9.0</jackson.version>
    
    <!-- jackson -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jackson.version}</version>
    </dependency>           
    
    • 并排除掉1.9版本的fastjson依赖
    • dubbo服务的提供者和消费者都要做修改
    • 在dto上加@JsonIgnoreProperties注解,注意统一使用2.+以上版本,并搜索是否还有1.9版本的依赖

    相关文章

      网友评论

          本文标题:dubbo rest 添加@JsonIgnore 无效的问题,替

          本文链接:https://www.haomeiwen.com/subject/folhfftx.html