【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 操作。如果有其他高级需求(如聚合查询、全文搜索等),可以根据具体场景进一步扩展。

相关推荐
uhakadotcom11 分钟前
Pandas入门:数据处理和分析的强大工具
后端·面试·github
Asthenia041214 分钟前
Json里面想传图片(验证码图)-Base64编码来助你!
后端
服务端技术栈1 小时前
MySQL 索引:数据库查询的“加速器”
后端
Asthenia04121 小时前
Redis与MySQL协同:旁路缓存机制
后端
hamburgerDaddy11 小时前
golang 从零单排 (一) 安装环境
开发语言·后端·golang
Asthenia04121 小时前
线程的生命周期状态你烂熟于心,那线程池呢?Running/ShutDown/Stop/Tidying/Terminated
后端
小画家~1 小时前
第本章:go 切片
开发语言·后端·golang
小画家~1 小时前
第五章:go 的数据类型 及go语言拼接字符串有哪些方式
开发语言·后端·golang
小华同学ai1 小时前
2K star!三分钟搭建企业级后台系统,这款开源Java框架绝了!
后端·架构·github
csdn_aspnet1 小时前
ASP.NET Core 6 MVC 文件上传
后端·asp.net·.netcore