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

相关推荐
树獭叔叔11 分钟前
10-让模型更小更聪明,学而不忘:知识蒸馏与持续学习
后端·aigc·openai
JxWang0519 分钟前
Task02:链表
后端
只会cv的前端攻城狮1 小时前
Elpis-Core — 融合 Koa 洋葱圈模型实现服务端引擎
前端·后端
codetown1 小时前
2026年Zig编程语言权威指南:从系统级底层架构到现代软件工程实践
后端·程序员
cg333 小时前
cc-connect,十分钟帮你把 claude code 连接到微信,飞书,钉钉等等平台
后端·openai
用户1427868669323 小时前
Java多态的底层真相:JVM到底怎么知道该调哪个方法?(面试高频)
后端
dkbnull3 小时前
深入理解Spring两大特性:IoC和AOP
spring boot
初次攀爬者3 小时前
RabbitMQ的消息模式和高级特性
后端·消息队列·rabbitmq
摸鱼的春哥4 小时前
惊!黑客靠AI把墨西哥政府打穿了,海量数据被黑
前端·javascript·后端
考虑考虑4 小时前
JDK25模块导入声明
java·后端·java ee