Logo
Section 1 / 10

Spring Data MongoDB 配置

探索从环境搭建到与MongoDB数据库集成的Spring Data MongoDB。

导入

Spring Data MongoDB 配置

探索从环境搭建到与MongoDB数据库集成的Spring Data MongoDB。

MongoDB

**MongoDB** 是一种流行的 NoSQL 数据库平台,以灵活的文档导向格式存储和管理数据。它能够高效处理非结构化或半结构化数据,适用于现代应用程序。MongoDB 具备良好的可扩展性和实时数据处理能力,因此广泛应用于从 Web 应用到数据分析等多种场景。

![](http://network.jancsitech.net:9000/pageflux-ai/images/general/202509/1758017856885947310.svg)

什么是 Spring Data MongoDB?

Spring Data MongoDB 是一个框架,用于简化在 Spring 应用中使用 MongoDB 的操作,提供了来自 Spring Data 的便捷抽象,并自动处理数据库操作、查询和对象映射。

该框架通过引入 Spring Boot Starter 依赖以及通过配置文件完成必要的配置,大大简化了在 Spring Boot 项目中对 MongoDB 的设置与配置过程。

在 build.gradle 中添加依赖

要在 Spring Boot 项目中使用 Spring Data MongoDB,首先需要在 build.gradle 文件中添加 spring-boot-starter-data-mongodb 依赖。但请注意,必须确保已安装并正在运行 MongoDB 数据库。

1plugins { 2 id 'java' 3 id 'org.springframework.boot' version '2.7.5' 4 id 'io.spring.dependency-management' version '1.1.0' 5} 6 7group = 'com.smartdiscover' 8version = '0.0.1-SNAPSHOT' 9sourceCompatibility = '11' 10 11repositories { 12 mavenCentral() 13} 14 15dependencies { 16 implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' 17 implementation 'org.projectlombok:lombok:1.18.26' 18 annotationProcessor 'org.projectlombok:lombok' 19}

说明:

  • 第 16 行:添加 spring-boot-starter-data-mongodb 依赖,以支持 Spring Data MongoDB 功能。

MongoDB 配置

接下来,在 com.smartdiscover.config 包下创建 MongoDBConfig 类,并继承 Spring Data MongoDB 框架提供的抽象类 AbstractMongoClientConfiguration。

1package com.smartdiscover.config; 2 3import com.mongodb.client.MongoClient; 4import org.springframework.context.annotation.Bean; 5import org.springframework.context.annotation.Configuration; 6import org.springframework.data.mongodb.MongoDatabaseFactory; 7import org.springframework.data.mongodb.MongoTransactionManager; 8import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; 9import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; 10 11@Configuration 12@EnableMongoRepositories(basePackages = "com.smartdiscover.repository") 13public class MongoDBConfig extends AbstractMongoClientConfiguration { 14 15 @Override 16 protected String getDatabaseName() { 17 return "spring_data_mongodb"; 18 } 19 20 @Bean 21 @Override 22 public MongoClient mongoClient() { 23 return super.mongoClient(); 24 } 25 26 @Bean 27 MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) { 28 return new MongoTransactionManager(dbFactory); 29 } 30 31}

代码说明如下:

  • 第 11 行:使用 @Configuration 注解将 MongoDBConfig 类注册为 Spring Boot 应用中的配置组件。
  • 第 12 行:使用 @EnableMongoRepositories 注解指定要扫描的仓库接口所在的包路径,并启用 MongoDB 仓库功能。
  • 第 15–18 行:重写 getDatabaseName 方法,设置数据库名称为 spring_data_mongodb。
  • 第 20–24 行:重写 mongoClient 方法,并将其声明为 Spring 容器中的 Bean。
  • 第 26–29 行:将 MongoTransactionManager 声明为 Spring Bean,用于支持 MongoDB 事务管理。

Spring Data MongoDB 应用程序

完成了!我们已经成功在 Spring Boot 项目 spring_data_mongodb 中集成并配置了 Spring Data MongoDB 框架。

No configuration found for ID: e789e488f37762e3772398c4d781857512e8747dfa7eb3cd1e702632ebe3baf0

代码说明:

  • 第 10 行:SpringDataMongodbApplication 实现了 CommandLineRunner 接口,使 Spring Boot 项目可以作为控制台应用程序启动并执行初始化逻辑。
  • 第 12 行:为类添加日志记录器。
  • 第 19–21 行:实现 run 方法,输出一条日志信息。

现在运行应用程序,观察日志输出,可以看到 Spring Data MongoDB 成功连接到 MongoDB 的相关信息:

12023-06-03 21:38:55.184 | INFO | host:27017 | org.mongodb.driver.connection | Opened connection [connectionId{localValue:3, serverValue:4}] to localhost:27017 22023-06-03 21:38:55.189 | INFO | host:27017 | org.mongodb.driver.cluster | Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=17, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=13650050} 32023-06-03 21:38:55.435 | INFO | main | s.SpringDataMongodbApplication | Spring Data MongoDB

本节课程中,我们完成了 Spring Data MongoDB 框架的搭建,并在 Spring Boot 项目中配置了 MongoDB 数据库。

Spring Data 详解

保存、更新和删除文档