spring boot 2.5 mongodb连接多数据库

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 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
目录
相关文章
|
20天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
120 68
|
20天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
16天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
16天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
16天前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
32 1
|
19天前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
44 0
|
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进行集成的过程(首要参考了上述博客)。
1555 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
5204 0
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。