spring boot 2.5 mongodb连接多数据库

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: spring boot 2.5 mongodb连接多数据库

依赖



compile "org.springframework.boot:spring-boot-starter-data-mongodb"

maven

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
mongo uri使用
mongodb://<username>:<password>@<host>:<port>/<db_name>
application.properties配置
#--- Primary MongoDB ---#
spring.data.mongodb.uri=mongodb://admin:root@127.0.0.1:27017/primary
#--- Secondary MongoDB ---#
mongodb.uri=mongodb://admin:root@127.0.0.1:27017/secondary
bean配置
package com.futve.common.config
import org.springframework.boot.autoconfigure.mongo.MongoProperties
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Primary
import org.springframework.data.mongodb.MongoDatabaseFactory
import org.springframework.data.mongodb.core.MongoTemplate
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory
@Configuration
open class MultipleMongoConfig {
   @Primary
   @Bean(name = ["primaryMongoProperties"])
   @ConfigurationProperties(prefix = "spring.data.mongodb")
   open fun getPrimary() : MongoProperties {
       return MongoProperties()
   }
   @Bean(name = ["secondaryMongoProperties"])
   @ConfigurationProperties(prefix = "mongodb")
   open fun getSecondary() : MongoProperties {
       return MongoProperties()
   }
   @Primary
   @Bean(name = ["primaryMongoTemplate"])
   open fun primaryMongoTemplate() : MongoTemplate {
       return MongoTemplate(primaryMongoDatabaseFactory(getPrimary()))
   }
   @Bean(name = ["secondaryMongoTemplate"])
   open fun secondaryMongoTemplate() : MongoTemplate {
       return MongoTemplate(secondaryMongoDatabaseFactory(getSecondary()))
   }
   @Primary
   @Bean
   open fun primaryMongoDatabaseFactory(mongo : MongoProperties) : MongoDatabaseFactory {
       return SimpleMongoClientDatabaseFactory(
           mongo.uri
       )
   }
   @Bean
   open fun secondaryMongoDatabaseFactory(mongo : MongoProperties) : MongoDatabaseFactory {
       return SimpleMongoClientDatabaseFactory(
           mongo.uri
       )
   }
}
package com.futve.common.config;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
@Configuration
public class MultipleMongoConfig2 {
    @Primary
    @Bean("primaryMongoProperties")
    @ConfigurationProperties("spring.data.mongodb")
    MongoProperties getPrimary() {
        return new  MongoProperties();
    } 
    @Bean("secondaryMongoProperties")
    @ConfigurationProperties("mongodb")
    MongoProperties getSecondary() {
        return new  MongoProperties();
    }
    @Primary
    @Bean("primaryMongoTemplate")
    public MongoTemplate primaryMongoTemplate() {
        return new MongoTemplate(primaryMongoDatabaseFactory(getPrimary()));
    }
    @Bean("secondaryMongoTemplate")
    public MongoTemplate secondaryMongoTemplate() {
        return new MongoTemplate(secondaryMongoDatabaseFactory(getSecondary()));
    }
    @Primary
    @Bean
    public MongoDatabaseFactory primaryMongoDatabaseFactory(MongoProperties mongo1) {
        return new SimpleMongoClientDatabaseFactory(
                mongo1.getUri()
        );
    }
    @Bean
    public MongoDatabaseFactory secondaryMongoDatabaseFactory(MongoProperties mongo2) {
        return new SimpleMongoClientDatabaseFactory(
                mongo2.getUri()
        );
    }
}

启动类配置

@SpringBootApplication(exclude = [
  MongoAutoConfiguration::class,
  MongoDataAutoConfiguration::class
])
dao使用
@Repository
class AuthorDao {
   @Autowired
   @Qualifier("secondaryMongoTemplate")
   protected lateinit var secondaryMongoTemplate : MongoTemplate
   fun findBySurname(surname): List<Author> {
       val query = Query()
      query.addCriteria(
          Criteria.where("surname").`is`(surname)
      )
      return secondaryMongoTemplate.find(query, Author::class.java)
   }
}
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
2天前
|
NoSQL Java MongoDB
Java一分钟之-Spring Data MongoDB:MongoDB集成
【6月更文挑战第11天】Spring Data MongoDB简化Java应用与MongoDB集成,提供模板和Repository模型。本文介绍其基本用法、常见问题及解决策略。包括时间字段的UTC转换、异常处理和索引创建。通过添加相关依赖、配置MongoDB连接、定义Repository接口及使用示例,帮助开发者高效集成MongoDB到Spring Boot应用。注意避免时间差、异常处理不充分和忽视索引的问题。
21 0
|
6天前
|
NoSQL JavaScript 安全
精心操作MongoDB:删除数据库的关键步骤和重要事项
精心操作MongoDB:删除数据库的关键步骤和重要事项
|
6天前
|
NoSQL 测试技术 MongoDB
MongoDB数据库管理:全面掌握mongodump和mongorestore的备份与恢复技巧
MongoDB数据库管理:全面掌握mongodump和mongorestore的备份与恢复技巧
|
6天前
|
存储 NoSQL 数据处理
探索MongoDB:灵活、高性能的NoSQL数据库解决方案与应用实践
探索MongoDB:灵活、高性能的NoSQL数据库解决方案与应用实践
|
8天前
|
存储 缓存 NoSQL
MongoDB数据库的主要应用场景是什么?
【6月更文挑战第5天】MongoDB数据库的主要应用场景是什么?
47 1
|
NoSQL Java Spring
Spring4整合mongodb 2.x
https://www.cnblogs.com/yinlixin/p/5643939.html 博客分别介绍了整合mongoDB 2.X 和mongoDB 3.Xhttp://blog.csdn.net/chenpy/article/details/50458787 上面的博客参考了这篇博客http://blog.51cto.com/ylcodes01/1934662 spring4.3.7整合mongodb3.2 在此记录下在笔者项目中,Spring4.3.8和mongoDB2.6进行集成的过程(首要参考了上述博客)。
1533 0
|
前端开发 Java Apache
|
NoSQL Java 数据库连接
Spring整合MongoDB
<div class="markdown_views"> <h1 id="1maven导入依赖">1、Maven导入依赖</h1> <pre class="prettyprint"><code class=" hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">project</span> <span
5162 0
|
29天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
74 0
|
29天前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
164 0