gpt4 book ai didi

Spring 数据mongodb : access default POJO converter from within custom converter

转载 作者:IT老高 更新时间:2023-10-28 13:57:47 30 4
gpt4 key购买 nike

我通过 xml 设置了 spring data mongo 自定义转换器,如下所示

<mongo:mapping-converter id="mongoConverter" db-factory-ref="mongoDbFactory">
<mongo:custom-converters>
<mongo:converter ref="customWriteConverter" />
<mongo:converter ref="customReadConverter" />
</mongo:custom-converters>
</mongo:mapping-converter>

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory"/>
<constructor-arg ref="mongoConverter"/>
</bean>

<bean id="customWriteConverter" class="package.WriteConverter" />
<bean id="customReadConverter" class="package.ReadConverter" />

在自定义读/写转换器中,我想重新使用spring-data-mongo的默认pojo转换器来将某些属性保存为子文档。

考虑一个简化的例子 -

class A {
B b;
String var1;
int var2;
}

class B {
String var3;
String var4;
}

我想使用 customWriteConvertercustomReadConverter 处理 A 类的转换,但在我的自定义转换器中,我还想将 B 类的转换委托(delegate)回 spring-data- mongo 的默认 POJO 转换器。

我该怎么做?我无法成功地将 MongoConverter 或 MongoTemplate Autowiring 到自定义转换器中,因为在尝试创建自定义转换器时正在创建 MongoConverter/MongoTemplate bean。是否可以访问默认转换器并在自定义转换器中使用它?

最佳答案

MongoTemplate类中使用此方法获取默认转换器。

private static final MongoConverter getDefaultMongoConverter(MongoDbFactory factory) {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, new MongoMappingContext());
converter.afterPropertiesSet();
return converter;
}

MappingMongoConverter 不是最终的,因此可以为特定目的被覆盖。正如我在上面的评论中提到的,请查看 this question或许能找到解决您问题的方法。

关于 Spring 数据mongodb : access default POJO converter from within custom converter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26120178/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com