Java中MongoDB的拦截器

时间:2018-02-01 10:26:28

标签: java spring mongodb hibernate proxyfactory

我是Spring和MongoDB的新手。我正在尝试审核MongoDB上的CRUD操作。 我发现很多插件可以审核MongoDB级别的更改,但我正在寻找类似于拦截器或钩子(例如,用于hibernate的EmptyInterceptor)的东西,它可以在Java级别上运行。

我在Java上使用GMongo来操作MongoDB。什么能帮助我解决这个问题?

2 个答案:

答案 0 :(得分:1)

spring-data-mongodb正是为了这些目的而提供Foo
请阅读完整的生命周期事件here

您所要做的就是编写一个类(确保Spring使用AbstractMongoEventListener或componentscan)扫描它,扩展@Configuration并实现AbstractMongoEventListener提供的各种抽象方法,并将您的审计逻辑写入内部这些方法。

在spring-data-mongodb jar中查看org.springframework.data.mongodb.core.mapping.event下的AbstractMongoEventListener

答案 1 :(得分:0)

我想你可以试试CommandListener。 您只需要一个实现该接口的新对象并将其添加到MongoClientOptions,然后使用MongoClientOptions创建一个MongoClient。 那样:

MongoCommandListener listener = new MongoCommandListener();

MongoClientOptions options =
                        MongoClientOptions.builder().addCommandListener(listener).build();

return new MongoClient(new ServerAddress(host,port), options);