Spring Data MongoDB 1.2.0静默引入了新功能:支持基本审核 。 因为您不会在本文的官方参考中找到太多有关它的信息,所以我将展示它带来的好处,如何配置Spring以进行审计以及如何对文档进行注释以使其可审计。 审核使您可以声明性地告诉Spring存储:

  • 文档创建的日期: @CreatedDate
  • 上次文档更新的日期: @LastModifiedDate
  • 创建文档的用户: @CreatedBy
  • 最近更新的用户: @LastModifiedBy
  • 当前文档版本: @Version

组态

首先,Maven依赖于最新的Spring Data MongoDB和Spring Data Commons。 另外,为了使用与日期相关的审计注释,我们需要在类路径中添加joda-time

<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId><version>1.2.1.RELEASE</version>
</dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-commons</artifactId><version>1.5.1.RELEASE</version>
</dependency><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.2</version>
</dependency>

为了启用审计,我们需要在Spring配置中添加<mongo:auditing /> 。 当前无法通过Java Config对其进行配置。

<mongo:auditing /><mongo:mongo id="mongo" /><bean class="org.springframework.data.mongodb.core.MongoTemplate"><constructor-arg name="mongo" ref="mongo" /><constructor-arg name="databaseName" value="blog-tests" />
</bean>

用法

上面的配置为我们提供了包括版本控制和时间戳在内的审计方法。 示例文档如下所示:

@Document
public class Item {@Idprivate String id;...    @Versionprivate Long version;@CreatedDateprivate DateTime createdAt;@LastModifiedDateprivate DateTime lastModified;...
}

现在,您可以使用MongoTemplate或存储库保存文档,并且所有带注释的字段均已自动设置。

您可能已经注意到,我在这里没有使用用户相关的注释@CreatedBy@LastModifiedBy 。 为了使用它们,我们需要告诉Spring谁是当前用户。

首先,将与用户相关的字段添加到审核的类中:

@CreatedBy
private String createdBy;@LastModifiedBy
private String lastModifiedBy;

然后创建您的AuditorAware实现,该实现将获取当前用户(可能从会话或Spring Security上下文中获取-取决于您的应用程序):

public class MyAppAuditor implements AuditorAware<String> {@Overridepublic String getCurrentAuditor() {// get your user name herereturn "John Doe";}
}

最后一件事是通过对Mongo配置进行少量修改来告诉Spring Data MongoDB有关此审计师的类:

<mongo:auditing auditor-aware-ref="auditor" />
<bean id="auditor" class="pl.maciejwalkowiak.blog.MyAppAuditor"/>
参考:来自JCG合作伙伴 Maciej Walkowiak的Spring Data MongoDB中的审计实体,来自Software Development Journey博客。

翻译自: https://www.javacodegeeks.com/2013/05/auditing-entities-in-spring-data-mongodb.html

Spring Data MongoDB中的审核实体相关推荐

  1. mongo java 注解,在Java中使用Spring Data MongoDB操作Mong | zifangsky的个人博客

    前言:在上一篇文章中(PS:https://www.zifangsky.cn/923.html)我简单介绍了如何在Linux中安装MongoDB以及MongoDB的增删改查等基本命令用法(PS:更多M ...

  2. 对Spring Data JPA中的page对象下的content属性里的实体类对象转换为dto对象

    对Spring Data JPA中的page对象下的content属性里的实体类对象转换为dto对象. 刚开始试遍历content,进行转换,添加到新的list中,再set进去page.后来发现pag ...

  3. mongodb数据库java接口,MongoDB —— 使用Spring Data MongoDB操作数据库

    我们使用Spring Data MongoDB可以方便的在Spring boot项目中操作MongoDB 文档地址:https://docs.spring.io/spring-boot/docs/2. ...

  4. SpringBoot 集成 Spring Data Mongodb 操作 MongoDB 详解

    一.MongoDB 简介 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,且与关系数据库的最为相像的.它支持的数据结构非常松散,是类似 json 的 bso ...

  5. Spring data MongoDB 系列之一连接数据库并 插入数据

    前言 最近开发新项目中用到MongoDB,为方便以后使用便记录下用法. 本文的数据库操作是以model对象进行展开,但是MongoDB是接受以Json,Map等为对象的操作的. (本人的项目中是以Js ...

  6. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

  7. Spring Data MongoDB教程

    在当今世界,尽快启动并运行应用程序非常重要. 该应用程序还应该易于开发和维护. Spring是这样的框架,它提供了与许多不同框架的集成的简便性,这使得使用Spring开发应用程序变得容易. 一种这样的 ...

  8. 数据聚合Spring Data MongoDB:嵌套结果

    1引言 在上一篇文章中,我们构建了聚合管道的基本示例. 如果您需要有关如何创建项目和配置应用程序的更多详细信息,也许您想看看使用Spring Data MongoDB和Spring Boot进行数据聚 ...

  9. 将原生SQL功能Hibernate到您的Spring Data Repository中

    JPA为您提供@NamedNativeQuery以便使用本机SQL. 但是,用法并不方便,特别是当您需要在本机SQL中映射多个实体时. 您必须定义一组SqlResultSetMapping映射,这很容 ...

最新文章

  1. pandas将dataframe日期数据列的日期转化为日期当月第一天(每月1号)的日期并生成新的数据列(Setting date to beginning of month in dataframe)
  2. Mysql PARTITION 数据表分区技术日期
  3. [问答]-EL1t和EL1h中的后缀t和h分别是什么意思
  4. 周休2.5天是一种奢望?互联网人自愿加班成常态?
  5. python元组和列表的联系_Python元组与列表的区别和联系?
  6. android fragment 教程,Android app开发中的Fragment入门学习教程
  7. 【原创】k8s源代码分析-----kubelet(8)pod管理
  8. 如何使用以太网将 Mac 接入互联网?
  9. CCNA培训课总结笔记--静态路由实现负载均衡(四)
  10. 会员积分营销系统,现代营销利器
  11. java applet介绍,applet java 介绍
  12. CF Stressful training优先队列加二分搜答案
  13. C++全角与半角互转
  14. USB 协议 (五) 枚举
  15. 关于Verilog中readmemb系统函数
  16. 百度测试实习面试记录
  17. Activity + Fragment 页面重叠问题
  18. 美名腾智能起名系统有了新界面
  19. java随机生成人名
  20. [深度学习] 百度api的asr语音识别(包括长音频,识别多个语句)

热门文章

  1. 转移指令jmp和跳转指令call
  2. jdk 9和jdk8_JDK 9已完成功能!
  3. 哈希策略_优化哈希策略的简介
  4. maven 部署nexus_设置本地Nexus存储库并从Maven部署WAR文件
  5. jpa和hibernate_从JPA到Hibernate的旧版和增强型标识符生成器
  6. db2分页sql_停止尝试使用内部DB框架模拟SQL OFFSET分页!
  7. java8 快排_Java 8快多少?
  8. JMetro“ Metro”选项卡,Java的TreeView和ContextMenu(JavaFX)
  9. scala 异步调用_非阻塞异步Java 8和Scala的Try / Success / Failure
  10. j2ee可以用于前端开发吗_用于J2EE开发的Cloud IDE