千家信息网

怎么在Spring Boot中使用MongoDB数据库

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家介绍怎么在Spring Boot中使用MongoDB数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MongoDB简介MongoDB是一个基于分布式文件存储的数
千家信息网最后更新 2026年11月02日怎么在Spring Boot中使用MongoDB数据库

这篇文章给大家介绍怎么在Spring Boot中使用MongoDB数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

MongoDB简介

MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。

MongoDB支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型,也因为他的存储格式也使得它所存储的数据在Nodejs程序应用中使用非常流畅。

既然称为NoSQL数据库,Mongo的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

但是,MongoDB也不是万能的,同MySQL等关系型数据库相比,它们在针对不同的数据类型和事务要求上都存在自己独特的优势。在数据存储的选择中,坚持多样化原则,选择更好更经济的方式,而不是自上而下的统一化。

较常见的,我们可以直接用MongoDB来存储键值对类型的数据,如:验证码、Session等;由于MongoDB的横向扩展能力,也可以用来存储数据规模会在未来变的非常巨大的数据,如:日志、评论等;由于MongoDB存储数据的弱类型,也可以用来存储一些多变json数据,如:与外系统交互时经常变化的JSON报文。而对于一些对数据有复杂的高事务性要求的操作,如:账户交易等就不适合使用MongoDB来存储。

MongoDB官网

访问MongoDB

在Spring Boot中,对如此受欢迎的MongoDB,同样提供了自配置功能。

引入依赖

Spring Boot中可以通过在pom.xml中加入spring-boot-starter-data-mongodb引入对mongodb的访问支持依赖。它的实现依赖spring-data-mongodb。是的,您没有看错,又是spring-data的子项目,之前介绍过spring-data-jpa、spring-data-redis,对于mongodb的访问,spring-data也提供了强大的支持,下面就开始动手试试吧。

compile "org.springframework.boot:spring-boot-starter-data-mongodb:$spring_boot_version"

完整 build.gradle

group 'name.quanke.kotlin'version '1.0-SNAPSHOT'buildscript { ext.kotlin_version = '1.2.10' ext.spring_boot_version = '1.5.4.RELEASE' ext.springfox_swagger2_version = '2.7.0' ext.mysql_version = '5.1.21' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath("org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version")// Kotlin整合SpringBoot的默认无参构造函数,默认把所有的类设置open类插件 classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version") classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version") }}apply plugin: 'kotlin'apply plugin: "kotlin-spring" // See https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-pluginapply plugin: 'org.springframework.boot'apply plugin: "kotlin-jpa" //https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-helljar { baseName = 'chapter11-6-4-service' version = '0.1.0'}repositories { mavenCentral()}dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile("org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}") compile "org.springframework.boot:spring-boot-starter-web:$spring_boot_version"// compile "org.springframework.boot:spring-boot-starter-data-jpa:$spring_boot_version" compile "org.springframework.boot:spring-boot-starter-data-mongodb:$spring_boot_version" testCompile "org.springframework.boot:spring-boot-starter-test:$spring_boot_version" testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"}compileKotlin { kotlinOptions.jvmTarget = "1.8"}compileTestKotlin { kotlinOptions.jvmTarget = "1.8"}

快速开始使用Spring-data-mongodb

若MongoDB的安装配置采用默认端口,那么在自动配置的情况下,我们不需要做任何参数配置,就能马上连接上本地的MongoDB。下面直接使用spring-data-mongodb来尝试对mongodb的存取操作。(记得mongod启动您的mongodb)

创建要存储的User实体,包含属性:id、username、age

import org.springframework.data.annotation.Idimport org.springframework.data.mongodb.core.mapping.Document@Documentdata class User(@Id var id: Long? = -1, var username: String = "", val age: Int? = 0)

实现User的数据访问对象:UserRepository

import name.quanke.kotlin.chaper11_6_4.entity.Userimport org.springframework.data.mongodb.repository.MongoRepositoryimport org.springframework.stereotype.Repository/** * Created by http://quanke.name on 2018/1/11. */@Repositoryinterface UserRepository : MongoRepository { fun findByUsername(username: String): User}

通过上面的例子,我们可以轻而易举的对MongoDB进行访问,但是实战中,应用服务器与MongoDB通常不会部署于同一台设备之上,这样就无法使用自动化的本地配置来进行使用。这个时候,我们也可以方便的配置来完成支持,只需要在application.properties中加入mongodb服务端的相关配置,具体示例如下:

参数配置

在 application.yml 文件中增加

spring: data: mongodb: uri: mongodb://192.168.2.53:27017/test

在尝试此配置时,记得在mongo中对test库创建具备读写权限的用户(用户名为name,密码为pass),不同版本的用户创建语句不同,注意查看文档做好准备工作

若使用mongodb 2.x,也可以通过如下参数配置,该方式不支持mongodb 3.x。

spring: data: mongodb: host: mongodb:localhost spring.data.mongodb.port=27017

单元测试

import name.quanke.kotlin.chaper11_6_4.entity.Userimport name.quanke.kotlin.chaper11_6_4.repository.UserRepositoryimport org.apache.commons.logging.LogFactoryimport org.junit.Testimport org.junit.runner.RunWithimport org.springframework.beans.factory.annotation.Autowiredimport org.springframework.boot.test.context.SpringBootTestimport org.springframework.test.context.junit4.SpringRunner/** * Created by http://quanke.name on 2018/1/9. */@RunWith(SpringRunner::class)@SpringBootTestclass ApplicationTests { val log = LogFactory.getLog(ApplicationTests::class.java)!! @Autowired lateinit var userRepository: UserRepository @Test fun `redis string test"`() { userRepository.save(User(1L, "quanke", 30)) userRepository.save(User(2L, "quanke.name", 40)) log.info("数据总条数:${userRepository.count()}") log.info("用户名字为 quanke : ${userRepository.findByUsername("quanke")}") }}

关于怎么在Spring Boot中使用MongoDB数据库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 存储 配置 数据库 支持 用户 类型 不同 功能 参数 方式 查询 复杂 强大 之间 事务 优势 内容 可以通过 对象 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 百单网互联网科技有限公司 华服互联网科技靠谱吗 互联网科技公司税收优惠 互联网巨头反垄断金融科技 鑫亿盛互联网科技 顶级互联网科技成果有哪些 互联网金融科技公司干啥的 互联网科技创新服务 辽宁互联网新科技 元气玛特互联网科技公司是外包吗 上海钢联属于互联网科技股吗 21世纪互联网科技成就 广东鹅鹅鹅互联网科技有限公司 互联网硬科技公司 版纳互联网科技选哪家 上海万顺科技互联网有限公司招聘 长沙渺峰互联网科技有限公司 互联网科技博主张洲 平安好医生打造互联网科技医疗 湖北九亚互联网络科技有限公司 华宇互联网科技 互联网 视角下的科技创新 宁夏众和广鑫互联网科技有限公司 河南猎农互联网科技有限公司 互联网科技人工智能实验室 科技互联网的核心竞争力 皮皮虾互联网科技有限公司 互联网领先科技活动 互联网时代高科技布局
0