当前位置: 首页 > news >正文

Spring Data审计利器:@LastModifiedDate详解(依赖关系补充篇)!!!

🕒 Spring Data审计利器:@LastModifiedDate详解🔥(依赖关系补充篇)


🔌 核心依赖解析

使用@LastModifiedDate必须知道的依赖关系

JPA方案
MongoDB方案
Spring Data Commons
提供注解
具体存储模块
Spring Data JPA
Spring Data MongoDB
Hibernate
MongoDB Driver

1. 通用必须依赖

所有场景都需要Spring Data Commons(包含注解定义):

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
    <version>${spring-data.version}</version>
</dependency>

2. JPA场景额外依赖

<!-- JPA实现(如Hibernate)-->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
</dependency>

<!-- Spring Data JPA -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
</dependency>

3. MongoDB场景依赖

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
</dependency>

🚦 不同技术栈的激活方式

JPA配置示例

@Configuration
@EnableJpaAuditing // 🎯 JPA专用激活开关
public class JpaConfig {
    @Bean
    public AuditorAware<String> auditorProvider() {
        return () -> Optional.of("admin"); 
    }
}

@Entity
@EntityListeners(AuditingEntityListener.class) // 🎧 JPA监听器
public class Order {
    @LastModifiedDate
    private LocalDateTime updateTime;
}

MongoDB配置示例

@Configuration
@EnableMongoAuditing // 🎯 MongoDB专用激活开关
public class MongoConfig {
}

@Document
public class Product {
    @LastModifiedDate
    private Date lastModified;
}

💡 常见问题扩展

Q:必须用JPA吗?能用MyBatis吗?

A: 可以!但需要额外步骤:

  1. 仅依赖spring-data-commons
  2. 手动实现审计逻辑(MyBatis无自动监听器)
public class User {
    @LastModifiedDate
    private Date updateTime; // 需手动赋值
}

// 在Mapper中手动设置
@Update("UPDATE user SET name=#{name}, update_time=NOW()")
void update(User user);

Q:如何查看是否生效?

A: 开启SQL日志+断点调试:

# application.properties
spring.jpa.show-sql=true
logging.level.org.hibernate.SQL=DEBUG

🧠 知识网络更新(依赖关系版)

在这里插入图片描述


🌟 总结升华

理解@LastModifiedDate三层依赖结构

  1. 注解层:Spring Data Commons提供元数据
  2. 实现层:Spring Data JPA/MongoDB提供监听器
  3. 存储层:Hibernate/MongoDB Driver完成持久化

技术选型建议

  • 新项目优先用Spring Data JPA(全自动)
  • 存量MyBatis项目可手动维护时间字段
  • 混合架构中可定制审计拦截器

记住:注解只是标记,具体实现由你选择的存储方案决定!🎯

http://www.dtcms.com/a/99652.html

相关文章:

  • springBoot与ElementUI配合上传文件
  • Vue2——常用指令总结、指令修饰符、v-model原理、computed计算属性、watch监听器、ref和$refs
  • Elasticsearch(ES)的经典面试题及其答案
  • 深度对比:DeepSeek vs OpenAI 核心技术指标
  • Matlab安装tdms插件
  • Numpy用法(三)
  • QT操作Excel
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的缓存技术:使用 Redis 提升性能
  • NodeJs之http模块
  • 学成在线--day02
  • 深度学习篇---模型训练评估参数
  • Tabby二:使用笔记 - 保姆级教程
  • C#的CSV 在8859-1下中乱码和技巧
  • 猜猜我用的是哪个大模型?我的世界游戏界面简单的模拟效果
  • 网络华为HCIA+HCIP 策略路由,双点双向
  • OSPF练习
  • Let’s Encrypt 宣布推出短期证书与 IP 地址支持,推动 Web 安全迈向新高度
  • 无线通信技术(二):ITU、3GPP及传统波段对无线频谱的划分
  • AutoDev 2.0 正式发布:智能体 x 开源生态,AI 自动开发新标杆
  • 计算机组成原理笔记(六)——2.2机器数的定点表示和浮点表示
  • React Router精通:轻松创建动态单页应用
  • 动态IP:网络世界的“变色龙”如何改变你的在线体验?
  • 革新汽车安全通信技术,美格智能全系车载通信模组支持NG-eCall
  • Baklib知识中台驱动智能架构升级
  • HTML布局
  • HTML文档流
  • Turtle事件处理(键盘与鼠标交互)
  • 基于单片机的智能家居设计(论文+源码)
  • RabbitMQ 技术详解:异步消息通信的核心原理与实践
  • wordpress的cookie理解