【Spring Boot 接入 MongoDB】

【Spring Boot 接入 MongoDB】

在 Spring Boot 项目中接入 MongoDB 是一个常见的需求,以下是详细的步骤和配置方法:


1. 添加依赖

pom.xml 文件中添加 Spring Data MongoDB 的依赖。

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

如果你使用的是 Gradle,可以添加以下内容:

gradle 复制代码
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

2. 配置 MongoDB 连接

application.propertiesapplication.yml 中配置 MongoDB 的连接信息。

使用 application.properties
properties 复制代码
# MongoDB 配置
spring.data.mongodb.uri=mongodb://username:password@localhost:27017/your_database_name
# 如果不需要认证,也可以直接指定 host 和 port
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=your_database_name
使用 application.yml
yaml 复制代码
spring:
  data:
    mongodb:
      uri: mongodb://username:password@localhost:27017/your_database_name
      # 或者分开配置
      host: localhost
      port: 27017
      database: your_database_name

注意:如果 MongoDB 启用了认证,请确保提供正确的用户名和密码。如果使用的是集群部署(如 Atlas),可以通过完整的 URI 指定所有节点。


3. 创建实体类

定义与 MongoDB 集合对应的实体类,并使用注解进行映射。

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
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

4. 创建 Repository 接口

Spring Data 提供了对 MongoDB 的支持,通过继承 MongoRepository 可以快速实现 CRUD 操作。

java 复制代码
import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository<User, String> {
    // 自定义查询方法
    List<User> findByName(String name);
}
  • MongoRepository<T, ID> 是 Spring Data MongoDB 提供的接口。
  • 方法命名遵循 Spring Data 的约定,例如 findByName 表示根据 name 字段查询。

5. 编写服务层逻辑

创建服务类来调用 Repository。

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public List<User> getUsersByName(String name) {
        return userRepository.findByName(name);
    }
}

6. 测试 MongoDB 功能

编写一个简单的控制器或测试类来验证功能。

示例控制器
java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/search")
    public List<User> searchUsersByName(@RequestParam String name) {
        return userService.getUsersByName(name);
    }
}

7. 启动并测试

启动 Spring Boot 应用程序后,你可以通过 Postman 或浏览器访问相关接口来测试 MongoDB 的增删改查功能。


8. 高级配置(可选)

自定义 MongoDB 客户端配置

如果需要自定义 MongoDB 客户端选项(如连接池、超时等),可以通过 MongoClient 进行配置。

java 复制代码
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.MongoClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoTemplate;

@Configuration
public class MongoConfig {

    @Bean
    public MongoTemplate mongoTemplate() {
        ConnectionString connectionString = new ConnectionString("mongodb://localhost:27017/your_database_name");
        MongoClientSettings settings = MongoClientSettings.builder()
                .applyConnectionString(connectionString)
                .build();
        return new MongoTemplate(MongoClients.create(settings), "your_database_name");
    }
}

通过以上步骤,你就可以成功地在 Spring Boot 项目中接入 MongoDB,并实现基本的 CRUD 操作。如果有其他高级需求(如聚合查询、全文搜索等),可以根据具体场景进一步扩展。

相关推荐
章豪Mrrey nical7 小时前
前后端分离工作详解Detailed Explanation of Frontend-Backend Separation Work
后端·前端框架·状态模式
派大鑫wink8 小时前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
程序员爱钓鱼8 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
xUxIAOrUIII8 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home8 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
zfj3218 小时前
go为什么设计成源码依赖,而不是二进制依赖
开发语言·后端·golang
weixin_462446239 小时前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
JIngJaneIL9 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小信啊啊9 小时前
Go语言切片slice
开发语言·后端·golang
全靠bug跑10 小时前
Spring Cloud OpenFeign 实战三部曲:快速集成 · 连接池优化 · 客户端抽取
java·spring boot·openfeign