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 进行文档数据的持久化。