文章目录
前言
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。
本项目为前后端分离开发,后端基于Java21和SpringBoot3开发,后端使用Spring Security、JWT、Spring Data JPA等技术栈,前端提供了vue、angular、react、uniapp、微信小程序等多种脚手架工程。
在项目中每条数据在创建或修改的时候,我想记录创建人,创建时间,最后修改人,最后修改时间等审计信息。如果每次都手动赋值,代码会变得冗长,显得很不优雅。Spring Data JPA为我们提供了审计功能,可以在执行创建或修改操作时自动为审计信息赋值。
本文将介绍两种实现方式,关于SpringBoot项目如何整合Spring Data JPA,请参阅https://blog.youkuaiyun.com/kingslave1/article/details/135661646
实现方式
使用Spring Data JPA实现审计功能,主要涉及以下注解:
@EnableJpaAuditing,启用JPA审计功能开关。@EntityListeners,可以监听实体对象的增删改查操作,调用监听器中设置的回调方法。@CreatedBy,创建人,执行insert操作时自动赋值。@CreatedDate,创建日期,执行insert操作时自动赋值。@LastModifiedBy,最后修改人,执行insert或update操作时自动赋值。@LastModifiedDate,最后修改时间,执行insert或update操作时自动赋值。
基于AuditorAware接口实现审计功能
启用JPA审计功能
定义一个配置类Bean,启用Spring Data JPA和审计功能,也可以直接main方法所在类上直接添加@EnableJpaRepositories、@EntityScan和@EnableJpaAuditing注解。
/**
* Spring Data JPA Bean配置
* 启用Jpa,扫描指定包下的Repository类和指定包下的实体类
*/
@Configuration
@EnableJpaRepositories(basePackages = {
"com.demo.data.repo"})
@EntityScan(basePackages = "com.demo.data.model")
@EnableJpaAuditing
public class JpaConfig {
}
定义实体类
以定义一个用户类SysUser为例,为其添加@EntityListeners({AuditingEntityListener.class})注解,在其审计信息属性上添加@CreatedBy等注解。
@Getter
@Setter
@Entity
@EntityListeners({
AuditingEntityListener.class})
public class SysUser implements Serializable {
/**
* ID,唯一标识列,使用主键自增策略
*/
@Id
@GeneratedValue(strategy = GenerationType

本文详细介绍了在SpringBoot项目中利用SpringDataJPA和两种方式实现审计功能:通过`AuditorAware`接口和自定义监听器,自动记录数据创建人、修改人信息。
最低0.47元/天 解锁文章
2788

被折叠的 条评论
为什么被折叠?



