我正在将一个非常古老的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...
}
此课程通过网络进行序列化,并包含在" common" 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...
}
我的问题是:如果调用者(反序列化上面的对象)不在他的类路径中有这些注释,序列化是否会失败?
答案 0 :(得分:0)
只有带有RETENTION的注释= RUNTIME在字节代码中使用,但序列化适用于对象字段,而不是类。
但重要的是要了解自定义序列化程序可以使用注释。 例如,这就是@Transient排除的实现方式。
所以下一步是检查使用什么类型的序列化机制。
ELAD