是否可以在 spring-data-mongodb 中注入自定义 Jackson ObjectMapper?

     2023-03-17     296

关键词:

【中文标题】是否可以在 spring-data-mongodb 中注入自定义 Jackson ObjectMapper?【英文标题】:Is is possible to inject a custom Jackson ObjectMapper in spring-data-mongodb? 【发布时间】:2014-02-23 12:50:12 【问题描述】:

我们在我们的应用程序中使用Coda Hale 指标,并使用 Json 模块插件来改进一些暴露应用程序指标的 REST 服务的 JSON 输出。

最近,我们开始将指标保存到 MongoDB。由于我们使用的是 spring-data-mongodb,所以保存 POJO 的代码被大大简化了。 Spring 的 MongoDB 类型映射使用通常的方法(自省 bean 属性以确定要保存和读取的内容),但是这不适用于 Code Hale 对象(Timer、Counter 等)。

如果我们可以让 Spring 使用 Jackson 已经可用的 JSON 模块,那就太好了,因为我们将拥有保存的序列化样式和很少需要维护的代码。

但是,在阅读了文档并浏览了一些 Spring mongodb 源文件之后,我找不到直接注入自定义 Jackson 序列化的方法。似乎自定义流程的唯一方法是创建自定义 MongoTypeMapper。

有人知道我们是否可以注入自定义 Jackson 映射器,或者可以推荐替代解决方案吗?

谢谢

【问题讨论】:

这会有帮助吗? ***.com/questions/7854030/… 您是否有兴趣在存储到 mongodb 或通过 RESTful api 提供对象时更改映射? @ecbrodie 谢谢,但这并没有解释如何将映射器注入到 spring-data 中,只是注入到 MVC 框架中(除非我的答案是错误的......) @DavidA:你提到的第一个想法。谢谢 @Sebastian 不幸的是,我认为您不能简单地注入杰克逊映射器,因为 spring-data-mongo 不使用杰克逊来转换为 json。它实际上直接映射到 MongoDb DBOject 实例。但是,理论上您可以用您自己的实现替换标准 MappingMongoConverter,该实现使用 jackson 生成要写入的 json。 【参考方案1】:

在 spring-data-mongodb 中有一个类型映射部分:link 我想你可以使用它。

【讨论】:

spring-data-mongodb 在一个 Mongo 实例中连接多个数据库

】spring-data-mongodb在一个Mongo实例中连接多个数据库【英文标题】:Spring-data-mongodbconnecttomultipledatabasesinoneMongoinstance【发布时间】:2012-08-1804:53:40【问题描述】:我正在使用最新的spring-data-mongodb(1.1.0.M2)和最新的MongoDriver(2.9.0-RC1)。... 查看详情

如何在 spring-boot 中禁用 spring-data-mongodb 自动配置

】如何在spring-boot中禁用spring-data-mongodb自动配置【英文标题】:Howtodisablespring-data-mongodbautoconfigurationinspring-boot【发布时间】:2015-04-2903:39:04【问题描述】:有没有人试过在spring-boot中禁用mongodb的自动配置?我正在尝试使用spring-d... 查看详情

使用 Kotlin 的 spring-data-mongodb 上的 @Transient 在读取期间导致异常

】使用Kotlin的spring-data-mongodb上的@Transient在读取期间导致异常【英文标题】:@Transientonspring-data-mongodbwithKotlinresultsinexceptionduringread【发布时间】:2019-06-0607:53:51【问题描述】:我的项目中使用Kotlin、SpringBoot2.0和MongoDB(使用SpringDa... 查看详情

使用 spring-data-mongodb 流式传输聚合操作的结果

】使用spring-data-mongodb流式传输聚合操作的结果【英文标题】:Streamingtheresultofanaggregateoperationusingspring-data-mongodb【发布时间】:2017-03-2311:49:28【问题描述】:我正在使用spring-data-mongodb,我想使用游标进行聚合操作。MongoTemplate.stre... 查看详情

使用 spring-data-mongodb 进行审计

】使用spring-data-mongodb进行审计【英文标题】:Auditingwithspring-data-mongodb【发布时间】:2017-05-2215:59:45【问题描述】:我正在尝试使用springdatamongodb启用自动审计字段,如here所述。下面是我的配置类@Configuration@EnableWebMvc@ComponentScan(b... 查看详情

spring-data-mongodb使用原生aggregate语句(更新中)

除了特殊注释外,本文的测试结果均基于spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB3.0.6   考虑到大多数人都是来找答案的,所以先给出结论//importorg.springframework.data.mongodb.core.MongoTemplate;mongoTempl 查看详情

将 Spring 安全 ACL 与 spring-data-mongodb 一起使用

】将Spring安全ACL与spring-data-mongodb一起使用【英文标题】:UsingSpringsecurityACLswithspring-data-mongodb【发布时间】:2017-11-0704:23:57【问题描述】:spring-security-acl文档声明如下:Pleasenotethatourout-of-the-boxAclServiceandrelateddatabaseclassesalluse 查看详情

spring-data-mongodb 使用 fieldName 而不是 _id

】spring-data-mongodb使用fieldName而不是_id【英文标题】:spring-data-mongodbusingthefieldNameinsteadof_id【发布时间】:2019-10-0812:46:41【问题描述】:我有一个属性为的PojoClassA@Id@Field("item_id")privateStringitemId;当我尝试根据itemId更新MongoDB集合中... 查看详情

如何以 ManyToMany (RDBMS) 的形式加入两个集合 spring-data-mongodb

】如何以ManyToMany(RDBMS)的形式加入两个集合spring-data-mongodb【英文标题】:HowcanIjointwocollectionsspring-data-mongdbasManyToMany(RDBMS)【发布时间】:2017-05-2222:16:59【问题描述】:我有来自https://github.com/szerhusenBC/jwt-spring-security-demo/的这个示... 查看详情

MongoDB Aggregation - 如何使用 spring-data-mongodb 将查询表达式应用到匹配阶段?

】MongoDBAggregation-如何使用spring-data-mongodb将查询表达式应用到匹配阶段?【英文标题】:MongoDBAggregation-Howcaniapplyqueryexpressionintomatchstageusingspring-data-mongodb?【发布时间】:2021-12-0623:59:05【问题描述】:我有包含动态字段的文档,我... 查看详情

spring-data-mongodb中的mongotemplate与mongorepository

(一)、SpringData概述 SpringData:Spring的一个子项目。用于简化数据库访问,支持NoSQL和关系数据存储。其主要目标是使数据库的访问变得方便快捷。●SpringData项目所支持NoSQL存储:MongoDB(文档数据库)Neo4j(图形数据库)Redis(键... 查看详情

是否可以在接口中实现本机方法?

】是否可以在接口中实现本机方法?【英文标题】:Isitpossibletoimplementnativemethodsininterfaces?【发布时间】:2021-11-2000:09:07【问题描述】:您经常听到接口中的方法没有实现。然而,在Java8中,实现默认方法成为可能。但我很感兴趣... 查看详情

是否可以知道用户是否在文本字段中输入或删除字符?

】是否可以知道用户是否在文本字段中输入或删除字符?【英文标题】:isitpossibletoknowifuseristypingordeletingcharactersinatextfield?【发布时间】:2011-03-0405:38:35【问题描述】:我正在使用文本字段委托方法“shouldChangeCharactersInRange”,... 查看详情

是否可以在子域之间共享 cookie

】是否可以在子域之间共享cookie【英文标题】:isitpossibletosharecookiesbetweensubdomains【发布时间】:2015-11-2801:38:34【问题描述】:是否可以在以下子域之间共享cookie??sharepoint.server.comANDdata.server.com【问题讨论】:Sharecookiebetweensubdo... 查看详情

javamongodb怎么实现id自增

如何保证在高并发下性能良好,java又该怎么操作参考技术Ahibernate新出了好像是叫hibernate-ogm吧,不知道有没有正式发布。它支持nosql数据库。或者你可以使用spring-data-mongodb,这是spring出的,目前应该的比较多 查看详情

是否可以在表之间创建关系?

】是否可以在表之间创建关系?【英文标题】:Isitpossibletocreaterelationshipsbetweentables?【发布时间】:2018-01-1517:12:53【问题描述】:Bigquery看起来很棒,我有一个数据库类型ETL,我的方案在实体之间有多个关系,我想知道是否有办... 查看详情

是否可以在静态方法中使用视图绑定?

】是否可以在静态方法中使用视图绑定?【英文标题】:Isitpossibletouseviewbindinginastaticmethod?【发布时间】:2021-12-2709:01:20【问题描述】:我的问题是,是否可以在静态方法中使用视图绑定:classSomeFragment:FragmentBinding<SomeFragmentBin... 查看详情

是否可以在添加之前获取 ID?

】是否可以在添加之前获取ID?【英文标题】:IsItPossibleToGetTheIDBeforeItWasAdded?【发布时间】:2018-04-0109:03:54【问题描述】:我知道在RealtimeDatabase中,我可以在像这样添加之前获得pushID:DatabaseReferencedatabaseReference=FirebaseDatabase.getIn... 查看详情