springboot系列15:多数据源MongoDB
上一篇介绍了mongodb单数据源的使用,这次我们聊聊多数据源的使用。
多数据源 MongoDB 的使用
1、pom 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> |
2、 配置两条数据源
1 2 3 4 | mongodb.primary.uri=mongodb: //localhost:28018 mongodb.primary.database=primary mongodb.secondary.uri=mongodb: //localhost:28018 mongodb.secondary.database=secondary |
3、 配置映射类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package top.zlcxy.multimongodb.properties; import org.springframework.boot.autoconfigure.mongo.MongoProperties; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties (prefix = "mongodb" ) public class MultipleMongoProperties { private MongoProperties primary = new MongoProperties(); private MongoProperties secondary = new MongoProperties(); public MongoProperties getPrimary() { return primary; } public void setPrimary(MongoProperties primary) { this .primary = primary; } public MongoProperties getSecondary() { return secondary; } public void setSecondary(MongoProperties secondary) { this .secondary = secondary; } } |
4、 对第一个库封装
1 2 3 4 5 6 7 8 | @Configuration @EnableConfigurationProperties (MultipleMongoProperties. class ) @EnableMongoRepositories (basePackages = "top.zlcxy.multimongodb.repository.primary" , mongoTemplateRef = PrimaryMongoConfig.MONGO_TEMPLATE) public class PrimaryMongoConfig { protected static final String MONGO_TEMPLATE = "primaryMongoTemplate" ; } |
5、 对第二个库封装
1 2 3 4 5 6 7 8 | @Configuration @EnableConfigurationProperties (MultipleMongoProperties. class ) @EnableMongoRepositories (basePackages = "top.zlcxy.multimongodb.repository.secondary" , mongoTemplateRef = SecondaryMongoConfig.MONGO_TEMPLATE) public class SecondaryMongoConfig { protected static final String MONGO_TEMPLATE = "secondaryMongoTemplate" ; } |
6、 读取对应的配置信息并且构造对应的 MongoTemplate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | @Configuration public class MultipleMongoConfig { @Autowired private MultipleMongoProperties mongoProperties; @Primary @Bean (name = PrimaryMongoConfig.MONGO_TEMPLATE) public MongoTemplate primaryMongoTemplate() throws Exception { return new MongoTemplate(primaryFactory( this .mongoProperties.getPrimary())); } @Bean @Qualifier (SecondaryMongoConfig.MONGO_TEMPLATE) public MongoTemplate secondaryMongoTemplate() throws Exception { return new MongoTemplate(secondaryFactory( this .mongoProperties.getSecondary())); } @Bean @Primary public MongoDbFactory primaryFactory(MongoProperties mongo) throws Exception { MongoClient client = new MongoClient( new MongoClientURI(mongoProperties.getPrimary().getUri())); return new SimpleMongoDbFactory(client, mongoProperties.getPrimary().getDatabase()); } @Bean public MongoDbFactory secondaryFactory(MongoProperties mongo) throws Exception { MongoClient client = new MongoClient( new MongoClientURI(mongoProperties.getSecondary().getUri())); return new SimpleMongoDbFactory(client, mongoProperties.getSecondary().getDatabase()); } } |
6、 测试编写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @RunWith (SpringRunner. class ) @SpringBootTest public class MuliMongodbTest { @Autowired private UserPrimaryRepository userPrimaryRepository; @Autowired private UserSecondaryRepository userSecondaryRepository; @Test public void testUser() { userPrimaryRepository.save( new User(1L, "张三" , "123456" )); List<User> primaryUsers = userPrimaryRepository.findAll(); for (User user : primaryUsers) { System.out.println(user); } userSecondaryRepository.save( new User(2L, "李四" , "123456" )); List<User> secondaryUsers = userSecondaryRepository.findAll(); for (User user : secondaryUsers) { System.out.println(user); } } } |
7、 测试结果
1 2 3 4 | 2020 - 06 - 14 18 : 11 : 18.614 INFO 7120 --- [ main] org.mongodb.driver.connection : Opened connection [connectionId{localValue: 3 , serverValue: 14 }] to localhost: 28018 User{id= 1 , userName= '张三' , passWord= '123456' } 2020 - 06 - 14 18 : 11 : 19.019 INFO 7120 --- [ main] org.mongodb.driver.connection : Opened connection [connectionId{localValue: 4 , serverValue: 15 }] to localhost: 28018 User{id= 2 , userName= '李四' , passWord= '123456' } |
分类:
spring boot
标签:
spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)