spring data mongodb中MappingMongodbConverter的用途是什么?

spring data mongodb中MappingMongodbConverter的用途是什么?,spring,mongodb,spring-data,spring-data-mongodb,Spring,Mongodb,Spring Data,Spring Data Mongodb,我看到一些代码使用这种方式初始化mongodbTemplate MappingMongoConverter converter = new MappingMongoConverter(new DefaultDbRefResolver(mongoDbFactory), context); converter.setTypeMapper(new DefaultMongoTypeMapper(null)); MongoTemplate mongoTemplate = new MongoTemp

我看到一些代码使用这种方式初始化mongodbTemplate

MappingMongoConverter converter = new MappingMongoConverter(new DefaultDbRefResolver(mongoDbFactory), context);

 converter.setTypeMapper(new DefaultMongoTypeMapper(null)); 

MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory, converter);
在本例中,MappingMongoConverter的角色到底是什么?它与其他形式的MongoTemplate初始化(如

  UserCredentials userCredentials = new UserCredentials("YOUR_USER_NAME", "YOUR_PASSWORD");
        return new SimpleMongoDbFactory(new Mongo(), "YOUR_DATABASE", userCredentials);
    }
  return new MongoTemplate(mongoDbFactory());


根据Javadoc,
MappingMongoConverter
负责将对象映射到MongoDB文档并返回。
MonogTemplate
上的不同构造函数只允许不同级别的定制:使用最简单的满足您需求的构造函数


大多数用户不需要自定义映射器,这样一个简单的
新MongoTemplate(mongoDbFactory)
就足以满足特殊的库式使用。更复杂的构造函数允许使用自定义实例,并且主要从Spring容器引导集成中使用,该集成将自动从用户定义的bean等获取自定义设置。

MappingMongoConverter
简单地说,有助于转换基于java的域对象(通常是您的实体/文档)到mongodb bson格式。它具有自动执行此操作所需的所有接口。尽管spring框架中提供的默认转换器适合大多数需求,但有时您可能希望自定义或控制转换器

简单用例:

将java对象存储到mongodb时,您可能会注意到每个文档中都存储了一个附加属性
\u class:“full.package.name.classname”
。这是使转换器能够将bson数据转换为特定java类格式的类型信息。通过提供不存储类型值的转换器,可以控制转换器不存储此信息,如下所示

@Bean
公共映射MongoConverter映射MongoConverter(){
DbRefResolver DbRefResolver=新的默认DbRefResolver(mongoDbFactory);
MappingMongoConverter converter=新的MappingMongoConverter(dbRefResolver,new MongoMappingContext());
//不要在mongo文档中保存类信息
setTypeMapper(新的DefaultMongoTypeMapper(null));
回流转换器;
}

复杂用例:

有时,您可能希望使用spring framework提供的默认转换器不支持的数据类型
ZoneDateTime
是一个很好的示例,它不受开箱即用的支持。在这种情况下,开发人员需要提供转换器,以帮助将ZonedDatetime转换为monogodb的bson格式存储,反之亦然。Baeldung有一个很好的教程,介绍如何实现这一点@