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 的依赖,如下:<dependencies>
<dependency>
<groupId>org.mongodbgroupId>
<artifactId>mongodb-driver-syncartifactId>
<version>4.4.0version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-mongodbartifactId>
<version>2.6.2version>
dependency>
dependencies>
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<User, String> {
}
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 方法
}
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-data-mongodb 库提供的扩展点。
application.properties
或application.yml
中配置分片信息,例如: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
类,用于配置分片策略和数据库实例:@Configuration
public class MongoDBConfiguration {
@Bean
public ShardingDataSource shardingDataSource() {
// 创建一个分片数据源
// ...
}
@Bean
public MongoDatabaseFactory mongoDatabaseFactory() {
// 创建一个 MongoDatabaseFactory 实例
// ...
}
}
@MongoRepository
或@MongoUnitOfWork
注解:@Service
public class MyService {
@MongoRepository
public MyCollectionRepository myCollectionRepository() {
// 创建一个分片集合的仓库
// ...
}
}
application.properties
或application.yml
中配置复制集信息,例如: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
类,用于配置复制集实例:@Configuration
public class MongoDBConfiguration {
@Bean
public MongoClient mongoClient() {
// 创建一个 MongoClient 实例
// ...
}
}
@MongoRepository
或@MongoUnitOfWork
注解:@Service
public class MyService {
@MongoRepository
public MyCollectionRepository myCollectionRepository() {
// 创建一个复制集集合的仓库
// ...
}
}
需要注意的是,以上操作均需要引入 spring-data-mongodb 依赖。在 pom.xml 中添加以下依赖:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-mongodbartifactId>
dependency>
并且确保 JDK 版本高于 1.8,以支持分片和复制集功能。