Spring认证中国教育管理中心-Spring Data MongoDB教程二

本文档介绍了Spring Data MongoDB中MongoDatabaseFactory接口的使用,包括基于Java和XML的元数据注册实例。同时,详细阐述了MongoTemplate的实例化、WriteResultChecking策略、WriteConcern和WriteConcernResolver。MongoTemplate是与MongoDB交互的核心工具,提供保存、更新和删除文档的功能,并处理_id字段映射和类型映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原标题:Spring Data MongoDB参考文档二(内容来源:Spring中国教育管理中心)

11.3.3.MongoDatabaseFactory 接口

虽然
com.mongodb.client.MongoClient是 MongoDB 驱动程序 API 的入口点,但连接到特定的 MongoDB 数据库实例需要其他信息,例如数据库名称和可选的用户名和密码。使用该信息,您可以获得一个com.mongodb.client.MongoDatabase对象并访问特定 MongoDB 数据库实例的所有功能。Spring 提供了org.springframework.data.mongodb.core.MongoDatabaseFactory如下清单所示的接口来引导连接到数据库:

public interface MongoDatabaseFactory { MongoDatabase getDatabase() throws DataAccessException; MongoDatabase getDatabase(String dbName) throws DataAccessException; }

以下部分展示了如何使用带有基于 Java 或基于 XML 的元数据的容器来配置MongoDatabaseFactory接口的实例。反过来,您可以使用该MongoDatabaseFactory实例来配置MongoTemplate.

您可以在标准 Java 代码中使用它们,而不是使用 IoC 容器来创建 MongoTemplate 的实例,如下所示:

public class MongoApp { private static final Log log = LogFactory.getLog(MongoApp.class); public static void main(String[] args) throws Exception { MongoOperations mongoOps = new MongoTemplate(new SimpleMongoClientDatabaseFactory(MongoClients.create(), "database")); mongoOps.insert(new Person("Joe", 34)); log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class)); mongoOps.dropCollection("person"); } }

Spring认证中国教育管理中心-Spring Data MongoDB教程二

粗体代码突出显示了
SimpleMongoClientDbFactory和入门部分中显示的清单之间的唯一区别。


SimpleMongoClientDbFactory在选择com.mongodb.client.MongoClient作为选择的入口点时 使用。

11.3.4.MongoDatabaseFactory使用基于 Java 的元数据注册实例

要向MongoDatabaseFactory容器注册实例,您编写的代码与前面代码清单中突出显示的非常相似。以下清单显示了一个简单的示例:

@Configuration
public class MongoConfiguration {

  public @Bean MongoDatabaseFactory mongoDatabaseFactory() {
    return new SimpleMongoClientDatabaseFactory(MongoClients.create(), "database");
  }
}

MongoDB 服务器第 3 代在连接到数据库时更改了身份验证模型。因此,一些可用于身份验证的配置选项不再有效。您应该使用MongoClient-specific 选项来设置凭据MongoCredential以提供身份验证数据,如以下示例所示:

@Configuration
public class ApplicationContextEventTestsAppConfig extends AbstractMongoClientConfiguration {

  @Override
  public String getDatabaseName() {
    return "database";
  }

  @Override
  protected void configureClientSettings(Builder builder) {

  	builder
  	    .credential(MongoCredential.createCredential("name", "db", "pwd".toCharArray()))
  	    .applyToClusterSettings(settings  -> {
  	    	settings.hosts(singletonList(new ServerAddress("127.0.0.1", 27017)));
  	    });
  }
}

Spring认证中国教育管理中心-Spring Data MongoDB教程二

为了在基于 XML 的配置中使用身份验证,请使用元素credential上的属

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技能咖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值