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

相关推荐
Starwow11 分钟前
微服务之gRPC
后端·微服务·golang
Asthenia041214 分钟前
AtomicMarkableReference如何解决ABA问题:深入分析
后端
pursue.dreams30 分钟前
Spring Boot整合T-IO实现即时通讯
spring boot·websocket·t-io
Asthenia041233 分钟前
Fail-Fast与快照机制深入解析及并发修改机制拷打
后端
Pasregret41 分钟前
观察者模式:从博客订阅到消息队列的解耦实践
后端·观察者模式
-曾牛1 小时前
【LangChain4j快速入门】5分钟用Java玩转GPT-4o-mini,Spring Boot整合实战!| 附源码
java·开发语言·人工智能·spring boot·ai·chatgpt
冬天vs不冷1 小时前
SpringBoot条件注解全解析:核心作用与使用场景详解
java·spring boot·python
考虑考虑1 小时前
Springboot捕获feign抛出的异常
spring boot·后端·spring
洛神灬殇1 小时前
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 时间事件处理部分)
redis·后端
DataFunTalk2 小时前
Foundation Agent:深度赋能AI4DATA
前端·后端·算法