SpringBoot连接MongoDB踩坑笔记

本文介绍了一个SpringBoot项目中正确配置MongoDB的方法。起初使用了错误的依赖导致NoClassDefFoundError异常,通过调整依赖引入spring-boot-starter-data-mongodb解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在本地安装了Mongodb,打算做个测试。pom.xml文件如下:

<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.12.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>3.2.2</version>
</dependency>

配置文件如下:

spring:
  data:
    mongodb:
      uri: mongodb://resumeUser:1111111111@127.0.0.1:27017/resume

但一直报错如下:

NoClassDefFoundError: com/mongodb/connection/DefaultClusterFactory。

一开始还以为引入的版本不对,后来才发现是依赖导错了,SpringBoot项目使用MongoDB该引入如下依赖:

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

现在,问题解决

### 使用Spring Boot连接MongoDB数据库 #### 配置`application.yml` 为了建立与MongoDB连接,在项目的`application.yml`文件中指定必要的配置参数。这些参数定义了主机地址、端口号以及目标数据库名称。 ```yaml spring: data: mongodb: host: localhost port: 27017 database: test ``` 此段代码展示了如何设置本地运行的MongoDB实例连接[^1]。 对于更复杂的场景,比如带有认证信息的情况,则可以采用如下方式: ```yaml spring: data: mongodb: uri: mongodb://username:password@localhost:27017/mydatabase database: mydatabase ``` 这里通过URI的形式提供了用户名和密码用于身份验证,并指定了要访问的具体数据库[^4]。 #### 添加依赖项 为了让项目具备操作MongoDB的能力,需向构建工具(如Maven或Gradle)中的`pom.xml`或`build.gradle`添加相应的依赖条目。以下是基于Maven的一个例子: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 该依赖会自动导入所有必需的支持包以便于后续开发工作[^3]。 #### 创建实体类 接下来定义一个简单的Java POJO作为文档映射模型。假设有一个名为`User`的数据表/集合结构,那么对应的实体类可能看起来像这样: ```java import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "users") public class User { @Id private String id; private String name; private int age; // Getters and Setters... } ``` 上述代码片段创建了一个代表用户记录的对象,并标注它属于`users`这个集合内。 #### 实现CRUD功能 最后一步就是编写业务逻辑层的服务接口和服务实现类来完成基本的操作。下面给出的是利用`MongoTemplate`执行查询的例子: ```java @Autowired private MongoTemplate mongoTemplate; public List<User> findAllUsers() { return mongoTemplate.findAll(User.class); } public void saveOrUpdateUser(User user) { mongoTemplate.save(user); } // 更多方法省略... ``` 这段程序说明了怎样借助框架提供的API来进行数据存取动作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值