自动检测实例化
- 带
@PersistenceCreator
的静态工厂方法
- 单一构造函数
- 多个构造函数,其中一个带
@PersistenceCreator
- 类型为 Java Record,使用规范构造函数
- 优先使用无参构造函数,其他构造函数将被忽略
因此,为了避免使用反射,要求属性类:
- 不能是一个私有类
- 不能是一个非静态内部类
- 不能是一个 CGLib 代理类
- Spring Data 使用的构造函数不能是私有的
属性填充
避免循环依赖
优先填充主键字段 @Id
来避免循环引用。原理:
- 通过主键来识别「已经加载过的对象」
- 使用「缓存机制」来避免重复创建
- 将引用替换为已经存在的对象实例,而不是新建一个
忽略 @Transient
字段
被 @Transient
标注的字段,Spring Data 再保存、加载对象的时候都会完全忽略
具体属性填充规则