【发布时间】:2018-02-12 03:16:48
【问题描述】:
我需要实现 dotReplacementKey
我正在使用具有此类配置的 MongoDB:
@Configuration
public class MongoTemplateConfig {
@Value("${adserver_mongo_connection_string}")
private String databaseConnectionString;
@Bean
public MongoDbFactory mongoDbFactory() throws UnknownHostException {
MongoClientURI uri = new MongoClientURI(databaseConnectionString.trim());
return new SimpleMongoDbFactory(uri);
}
@Bean
public MongoTemplate mongoTemplate() throws UnknownHostException {
return new MongoTemplate(mongoDbFactory());
}
@Bean
public MappingMongoConverter mongoConverter(MongoDbFactory mongoFactory, MongoMappingContext mongoMappingContext) throws Exception {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
mongoConverter.setMapKeyDotReplacement(".");
return mongoConverter;
}
}
我正在按如下方式进行更新:
mongoTemplate.bulkOps(...).upsert(...)
但是在运行时通过调试我发现使用了不同的 MappingMongoConverter 而不是这个被配置为@Bean
顺便说一句,如果在 MappingMongoConverter 的任何地方使用@Inject,我会从带有 keyDotReplacement="." 的配置中获得正确的 bean。 但看起来 Spring Boot 在后台使用了另一个
附:我已经看到这个question 没有正确答案,但用mongoConverter.afterPropertiesSet() 尝试过,显然它不起作用
【问题讨论】:
标签: spring spring-boot spring-data spring-data-mongodb spring-mongo