Spring Data MongoDB自动设置BaseEntity基础字段的最佳实现方式
最简洁实现方式:启用Spring Data MongoDB审计功能
在Spring Boot 3.x + Java 17环境下,最简洁的实现是利用Spring Data MongoDB的审计功能,通过注解自动填充createdOn和updatedOn字段,无需编写手动赋值的回调方法。
步骤1:修改BaseEntity,添加审计注解
import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.mongodb.core.mapping.MongoId; import java.time.Instant; public class BaseEntity { @MongoId private ObjectId id; @CreatedDate // 自动填充创建时间 private Instant createdOn; @LastModifiedDate // 自动填充更新时间 private Instant updatedOn; // 按需添加getter/setter public ObjectId getId() { return id; } public void setId(ObjectId id) { this.id = id; } public Instant getCreatedOn() { return createdOn; } public Instant getUpdatedOn() { return updatedOn; } }
步骤2:启用MongoDB审计功能
在Spring Boot启动类上添加@EnableMongoAuditing注解:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.mongodb.config.EnableMongoAuditing; @SpringBootApplication @EnableMongoAuditing public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }
关键说明
@CreatedDate:实体首次保存时,自动将字段设为当前时间。@LastModifiedDate:实体更新时,自动将字段更新为当前时间。@MongoId:Spring Data MongoDB 3.x推荐用此注解替代旧的@Id,兼容ObjectId、String等多种ID类型,若习惯用@Id也可保留,功能不受影响。- 零手动逻辑:审计功能会自动监听实体的CRUD操作,完成字段赋值,无需编写任何回调方法,是最简洁的实现方案。
内容的提问来源于stack exchange,提问作者SRI HARSHA S V S
相关产品推荐
相关产品推荐

