Spring实战系列文章:
Spring实战 | Spring AOP核心秘笈之葵花宝典
Spring实战 | Spring IOC不能说的秘密?
国庆中秋特辑系列文章:
国庆中秋特辑(八)Spring Boot项目如何使用JPA
国庆中秋特辑(七)Java软件工程师常见20道编程面试题
国庆中秋特辑(六)大学生常见30道宝藏编程面试题
国庆中秋特辑(五)MySQL如何性能调优?下篇
国庆中秋特辑(四)MySQL如何性能调优?上篇
国庆中秋特辑(三)使用生成对抗网络(GAN)生成具有节日氛围的画作,深度学习框架 TensorFlow 和 Keras 来实现
国庆中秋特辑(二)浪漫祝福方式 使用生成对抗网络(GAN)生成具有节日氛围的画作
国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词
在项目的 pom.xml 文件中添加 MongoDB 驱动和 Spring Data MongoDB 的依赖,如下:
org.mongodb mongodb-driver-sync 4.4.0 org.springframework.boot spring-boot-starter-data-mongodb 2.6.2
在 application.properties 文件中配置 MongoDB 的连接信息,如下:
spring.data.mongodb.uri=mongodb://username:password@localhost:27017/myDatabase
创建一个实体类,并使用注解来定义文档结构和映射关系。例如:
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 }
创建一个继承自 JpaRepository 的接口,并为其添加方法。例如:
import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends CrudRepository{ }
在 Service 层,注入 UserRepository 并使用它来进行 CRUD 操作。例如:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserRepository userRepository; public User save(User user) { return userRepository.save(user); } public User findById(String id) { return userRepository.findById(id).orElse(null); } // 其他 CRUD 方法 }
在 Controller 层,注入 UserService 并处理 HTTP 请求。例如:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @PostMapping public User save(@RequestBody User user) { return userService.save(user); } @GetMapping("/{id}") public User findById(@PathVariable String id) { return userService.findById(id); } }
注意事项:
通过以上步骤,一个简单的 Spring Boot 项目就完成了与 MongoDB 的整合。在实际项目中,还可以根据需求添加更多的配置和操作方法。
在 Spring Boot 项目中,对 MongoDB 进行分片或复制集操作,主要依赖 spring-data-mongodb 库提供的扩展点。
分片是将数据库的集合(Collection)分散在多个数据库服务器上,以提高查询性能和扩展性。在 Spring Boot 项目中,可以通过以下方式对 MongoDB 进行分片操作:
spring.data.mongodb.shard-strategy=org.springframework.data.mongodb.core.shard.BackwardCompatibleShardingStrategy spring.data.mongodb.target-db-config.default.mongo-uri=mongodb://localhost:27017/mydb spring.data.mongodb.target-db-config.default.database=mydb spring.data.mongodb.target-db-config.shard-targets={\"ds\"=>0,\"target\"=>\"mydb_${0..199}\"}
@Configuration public class MongoDBConfiguration { @Bean public ShardingDataSource shardingDataSource() { // 创建一个分片数据源 // ... } @Bean public MongoDatabaseFactory mongoDatabaseFactory() { // 创建一个 MongoDatabaseFactory 实例 // ... } }
@Service public class MyService { @MongoRepository public MyCollectionRepository myCollectionRepository() { // 创建一个分片集合的仓库 // ... } }
复制集是由多个 MongoDB 实例组成的集合,可以提供数据备份和读写分离。在 Spring Boot 项目中,可以通过以下方式对 MongoDB 进行复制集操作:
spring.data.mongodb.replica-set=myReplicaSet spring.data.mongodb.host=mongodb://localhost:27017 spring.data.mongodb.port=27017 spring.data.mongodb.authentication-database=admin spring.data.mongodb.database=mydb
@Configuration public class MongoDBConfiguration { @Bean public MongoClient mongoClient() { // 创建一个 MongoClient 实例 // ... } }
@Service public class MyService { @MongoRepository public MyCollectionRepository myCollectionRepository() { // 创建一个复制集集合的仓库 // ... } }
需要注意的是,以上操作均需要引入 spring-data-mongodb 依赖。在 pom.xml 中添加以下依赖:
org.springframework.boot spring-boot-starter-data-mongodb
并且确保 JDK 版本高于 1.8,以支持分片和复制集功能。