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