ash*_*osh 13 spring spring-data spring-data-mongodb
我通过xml设置spring数据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" />
Run Code Online (Sandbox Code Playgroud)
在自定义读/写转换器中,我想重新使用spring-data-mongo的默认pojo转换器将某些属性保存为子文档.
考虑一个简化的例子 -
class A {
B b;
String var1;
int var2;
}
class B {
String var3;
String var4;
}
Run Code Online (Sandbox Code Playgroud)
我想使用customWriteConverter
和处理A类的转换customReadConverter
,但在我的自定义转换器中,我还想将B类的转换委托给spring-data-mongo的默认POJO转换器.
我怎样才能做到这一点?我无法成功将MongoConverter或MongoTemplate自动装入自定义转换器,因为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;
}
Run Code Online (Sandbox Code Playgroud)
MappingMongoConverter
不是最终的,因此可以为特定目的覆盖。正如我在上面的评论中提到的,查看这个问题也许可以找到解决您问题的方法。
归档时间: |
|
查看次数: |
1959 次 |
最近记录: |