我们正在尝试为此设置我们自己的转换器,Spring Data Mongo
并遇到了问题。
好像Spring从不要求registerConvertersIn
使用CustomConversions,因此通过重写添加的自定义转换器AbstractMongoConfiguration#customConversions
永远不会成为转换的一部分。
我们正在使用Spring Data Mongo 1.6.3,但对于1.8.0来说似乎也可能是个问题(我检查了对的调用,CustomConversions#registerConvertersIn
但均未找到。)
我可以通过这样的CustomConversions#registerConvertersIn
自定义调用来解决此问题MappingMongoConverter
:
class MongoConfig extends AbstractMongoConfiguration { @Bean @Override public MappingMongoConverter mappingMongoConverter() throws Exception { DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory()); MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext()) { @Override public void setCustomConversions(CustomConversions conversions) { super.setCustomConversions(conversions); conversions.registerConvertersIn(conversionService); } }; converter.setCustomConversions(customConversions()); return converter; } }
那是一个错误还是我们做错了什么?
找到了另一种解决方法:https : //stackoverflow.com/a/14369998/4567261
但这对我没有任何帮助。在设置mongo模板时,我们需要告诉mongo db使用自定义转换。
@Bean public MongoTemplate mongoTemplate() throws Exception { MongoTemplate mongoTemplate = new MongoTemplate(mongo(), mongoDatabase); MappingMongoConverter mongoMapping = (MappingMongoConverter) mongoTemplate.getConverter(); mongoMapping.setCustomConversions(customConversions()); // tell mongodb to use the custom converters mongoMapping.afterPropertiesSet(); return mongoTemplate; }
单击此链接以获取更多详细信息:http : //ufasoli.blogspot.in/2017/06/custom-converter-for-mongodb-and-spring.html