4.2.1 启用 Spring Data MongonDB

要开始使用 Spring Data MongoDB,您需要添加 Spring Data MongoDB 的 starter 依赖。Spring Data MongoDB 有两个独立的 starter 可供选择:响应式的或者非响应式的。我们将在第 15 章中讨论响应式的持久化方案。现在,非响应式的 MongoDB,您可以添加以下依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>
        spring-boot-starter-data-mongodb
    </artifactId>
</dependency>

在使用 Spring Initializr 创建工程时,可以通过勾选 MongoDB 复选框以添加这个依赖。

通过将 starter 添加到构建中,将触发自动配置以启用 Spring Data 支持编写 Repository 接口。就像第 3 章中为 JPA 或者本章前面为 Cassandra 编写的接口。

默认情况下,Spring Data MongoDB 假设 MongoDB 服务运行在本地,并且监听端口 27017。如果您的机器上安装了 Docker,那么获得 MongoDB 服务可以使用以下命令:

 $ docker run -p 27017:27017 -d mongo:latest

为了方便测试和开发,您可以选择使用嵌入式 Mongo 数据库。为此,可以把 Flapdoodle Embedded MongoDB 依赖项添加到项目中:

<dependency>
  <groupId>de.flapdoodle.embed</groupId>
  <artifactId>de.flapdoodle.embed.mongo</artifactId>
  <!-- <scope>test</scope> -->
</dependency>

这个 Flapdoodle 嵌入式数据库,为测试和开发提供了便利。它是内存中的 Mongo 数据库,就像您在处理关系型数据库时使用 H2 那样。也就是说,您不需要运行单独的数据库服务,而是所有数据都放在内存中,并且重新启动应用程序时,所有数据将被清除。

嵌入式数据库对于开发和测试来说是很好的,但是一旦您的应用程序要发布到生产环境,您需要确保设置了一些必要属性,以便告知 Spring Data MongoDB 数据库在哪里,以及如何访问:

spring:
  data:
    mongodb:
      host: mongodb.tacocloud.com
      port: 27017
      username: tacocloud
      password: s3cr3tp455w0rd
      database: tacoclouddb

这些属性并不是都需要设置的。它们的作用是帮助 Spring Data MongoDB 了解到 Mongo 数据库未在本地运行。如果分解一下,每个属性所指定的配置如下:

  • spring.data.mongodb.host —— Mongo 服务器的主机名(默认值:localhost)
  • spring.data.mongodb.port —— Mongo 服务器正在侦听的端口(默认值:27017)
  • spring.data.mongodb.username —— 用于访问 Mongo 数据库的用户名
  • spring.data.mongodb.password —— 用于访问 Mongo 数据库的的密码
  • spring.data.mongodb.database —— 数据库名称(默认值:test)

现在,您的项目中启用了 Spring Data MongoDB。下一步,您需要对实体对象添加注解,以便通过 MongoDB 进行文档数据的持久化。

results matching ""

    No results matching ""