添加注释会破坏Java序列化吗?

添加注释会破坏Java序列化吗?,java,serialization,annotations,Java,Serialization,Annotations,我正在将一个非常旧的java应用程序重写为Spring Boot和Hibernate 5。这个任务的一部分要求我用注释替换XML配置(Spring和Hibernate) 我有以下问题。假设应用程序包含这样一个类: public class MyObject implements Serializable { private static final long serialVersionUID = 81848571841847187L; private String id;

我正在将一个非常旧的java应用程序重写为Spring Boot和Hibernate 5。这个任务的一部分要求我用注释替换XML配置(Spring和Hibernate)

我有以下问题。假设应用程序包含这样一个类:

public class MyObject implements Serializable {
      private static final long serialVersionUID = 81848571841847187L;
      private String id;
      private String name;
      //getters and setters...
}
该类通过网络序列化,并包含在“公共”jar中,为了在其端进行反序列化,类必须包含该jar

假设我在类中添加了一些Hibernate和JPA注释

@Table(...)
@Entity
public class MyObject implements Serializable {
      private static final long serialVersionUID = 81848571841847187L;

      @Id
      @Column(...)
      private String id;

      @Column(...)
      private String name;
      //getters and setters...
}

我的问题是:如果调用方(对上述对象进行反序列化的调用方)的类路径中没有这些注释,序列化会失败吗?

字节码中只使用RETENTION=RUNTIME的注释,但序列化可用于对象字段,而不是类

但重要的是要理解注释可以由自定义序列化程序使用。 例如,这就是@Transient exclusion的实现方式

因此,下一步是检查所使用的序列化机制的类型

埃拉德