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

什么是 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 数据库。