在软件开发中,我们经常需要跟踪实体的历史记录,例如创建时间、修改时间等。Spring Data JPA 提供了一种名为 Auditing 的功能,可以自动处理这些操作。本文将介绍如何在 Spring Boot 项目中使用 Spring JPA Auditing。
实现方式
在实体类上添加注解;
- 定义通用实体,比如Domain类,我们会将通用字段在这里定义
- 添加Auditing相关注解;
- 添加自动填充属性实现,主要通过实现AuditorAware接口,并将实现注入到spring容器;
- 定义spring自动配置;
在resource目录添加自动注入配置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,这样通过引入jar就可以自动使用该配置。
应用示例
- 比如现在有一个User实体,我们通过继承基类;
- 定义用户对应的Repository;
- 用户的创建与修改基于UserRepository来实现;
- 服务;
通过注解@EnableJpaAuditing启用。
- 编写测试用例;
这样每次调用用户新增请求时,默认会将DomainAuditorAware的返回值填充到@CreatedBy与@LastModifiedBy修饰的字段上去。
实现原理
可以看到,实现该效果狐妖有以下几个关键点:
- 实体需要添加@EntityListeners(AuditingEntityListener.class),并且需要再对应字段上标识出需要注入的操作人、操作时间等。
- 需要编写自己的实现AuditorAware<String>,这里只用关注创建人,时间没必要处理,当然也可以通过实现接口DateTimeProvider来扩展。
- 需要基于JpaRepository接口实现用户的新增或修改。
- 需要@EnableJpaAuditing开启。