美文网首页
序列化和lombok

序列化和lombok

作者: 木果渣 | 来源:发表于2019-02-22 15:21 被阅读0次

    序列化-将java对象转换为字节对象
    Serializable实现
    dubbo服务在调用的时候,传输的实体必须要实现序列化
    java.lang.IllegalStateException: Serialized class com.c4tman.mock.provider.dubbo.dto.Person
    must implement java.io.Serializable

    transient关键字修饰的属性,会用默认值,不会被序列化。

    如果父类实现了Serializable接口,子类没有实现Serializable接口,那么子类可以正常序列化。

    如果子类实现了Serializable接口,而父类没有实现Serializable接口,那么必须满足如下条件子类才能正常序列化,

    第一:父类必须提供一个公共的无参默认构造函数

    使用gson时,没有无参构造也可以

    Externalizable实现
    需要序列化的对象必须有无参构造
    需自行实现每个属性的序列化规则

    静态属性不能被序列化,只会只用默认值

    反序列化-将字节对象转换为java对象
    dubbo传输实体无无参构造方法,也可以调用成功。
    ObjectInputStream也可以成功,见鬼了吧~

    一些常用的序列化工具
    xml
    json
    protobuff
    avro

    lombok

    注解在类上
    @Data
    提供get set equals canEqual hashCode toStrings一个6个方法
    @Setter
    所有属性的setter方法
    @Getter
    所有属性的getter方法
    @ToString
    生成toString方法
    @Value
    提供get equals hashCode toStrings一个4个方法
    @

    @Log4j
    名为log的Log4j对象
    @Log4j2
    名为log的Log4j2 对象
    @Slf4j
    名为log的Slf4j 对象

    @AllArgsConstructor
    提供全参构造方法,使用此方法后,默认的构造方法(无参构造)将不再提供。
    @NoArgsConstructor
    提供无参构造方法。
    @EqualsAndHashCode
    提供equals canEqual hashCode方法

    @Builder
    只使用@Builder会自动创建全参构造器。默认
    而添加上@NoArgsConstructor后就不会自动产生全参构造器
    反序列化需要DTO实现无参构造方法

    注解在属性上
    @NonNull
    属性不能为空,且默认有该属性的构造方法,无无参构造。

    注解在变量上
    @CleanUp
    调用变量的close()方法。

    注解再方法上
    @SneakyThrows(Exception.class)
    整个方法抛出异常

    相关文章

      网友评论

          本文标题:序列化和lombok

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