Mik*_*din 14 spring-data spring-data-mongodb spring-boot
如何MappingMongoConverter在不更改由spring-data自动配置的任何mongo-stuff的情况下自定义Spring-Boot-Application(1.3.2.RELEASE)中的内容?
我目前的解决方案是:
@Configuration
public class MongoConfig {
@Autowired
private MongoDbFactory mongoFactory;
@Autowired
private MongoMappingContext mongoMappingContext;
@Bean
public MappingMongoConverter mongoConverter() throws Exception {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
//this is my customization
mongoConverter.setMapKeyDotReplacement("_");
mongoConverter.afterPropertiesSet();
return mongoConverter;
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方式还是我打破了一些东西?
或者是否有更简单的方法来设置mapKeyDotReplacement?
这是正确的方法.自动配置MappingMongoConverter使用注释@ConditionalOnMissingBean(MongoConverter.class),因此添加自己的MappingMongoConverterbean将导致自动配置退出,以支持您的自定义转换器.
一个小的修正:你没有必要打电话mongoConverter.afterPropertiesSet().容器会为您调用它.
我在最新版本的spring boot中遇到过这个问题.你的方法不适合我或接受的答案...我的启动应用似乎忽略了我的自定义映射转换器.
那么我在配置类中做了什么我在启动时使用的MappingMongoConverter中自动装配,然后在其上设置setMapKeyDotReplacement.
@Autowired
private MappingMongoConverter mongoConverter;
// Converts . into a mongo friendly char
@PostConstruct
public void setUpMongoEscapeCharacterConversion() {
mongoConverter.setMapKeyDotReplacement("_");
}
Run Code Online (Sandbox Code Playgroud)
还有更短的版本:
@Autowired
void setMapKeyDotReplacement(MappingMongoConverter mappingMongoConverter) {
mappingMongoConverter.setMapKeyDotReplacement("_");
}
Run Code Online (Sandbox Code Playgroud)
记住将其放入Spring会意识到的类中-例如,用注释的类 @Configuration
| 归档时间: |
|
| 查看次数: |
6295 次 |
| 最近记录: |