Springboot2.x之Mongodb多数据源配置

SpringBoot2.x整合Mongo实现多数据库切换 SpringBoot2.x整合Mongo实现多数据库切换 前言 本项目Mongo的多数据库切换的核心其实还是利用AOP以及自定义的MongoTemplate。然后Mongo的操作类 MultiMongoTemplate 首先是自定义的MongoTemplate,这个不用多讲,就是对mongo执行各种操作的关键所在。这里多数据库的切换,说白了就是在需要切换的时候,利用MongoDbFactory构造对应的MongoTemplate即可。然后保存到ThreadLocal中,每次获取MongoDatabase的时 阅读详情

Springboot2.x之Mongodb多数据源配置,具体如下:

1. repository 一定要放到对应包里才能生效

2. 需要在 Main 类上增加配置: 

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, MongoDataAutoConfiguration.class})

3. 数据源配置:

#spring.data.mongodb.first.database=node1
spring.data.mongodb.first.uri=mongodb://localhost:27017/node1?minPoolSize=5&maxPoolSize=20

#spring.data.mongodb.second.database=node2
spring.data.mongodb.second.uri=mongodb://localhost:27017/node2?minPoolSize=5&maxPoolSize=20

#spring.data.mongodb.third.database=node3
spring.data.mongodb.third.uri=mongodb://localhost:27017/node3?minPoolSize=5&maxPoolSize=20

#spring.data.mongodb.fourth.database=node4
spring.data.mongodb.fourth.uri=mongodb://localhost:27017/node4?minPoolSize=5&maxPoolSize=20

 

4. 代码实现:

package cn.net.springboot.data.migrate.multimongo;

import com.mongodb.MongoClientURI;
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.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

@Configuration
public class MultipleMongoConfig {
    // ================== MongoProperties 配置 ===================

    @Bean
    @ConfigurationProperties("spring.data.mongodb.first")
    public MongoProperties firstMongoProperties() {
        System.out.println("================== firstMongoProperties 配置 ===================");
        return new MongoProperties();
    }

    @Bean
    @ConfigurationProperties("spring.data.mongodb.second")
    public MongoProperties secondMongoProperties() {
        System.out.println("================== secondMongoProperties 配置 ===================");
        return new MongoProperties();
    }

    @Bean
    @ConfigurationProperties("spring.data.mongodb.third")
    public MongoProperties thirdMongoProperties() {
        System.out.println("================== thirdMongoProperties 配置 ===================");
        return new MongoProperties();
    }

    @Bean
    @ConfigurationProperties("spring.data.mongodb.fourth")
    public MongoProperties fourthMongoProperties() {
        System.out.println("================== fourthMongoProperties 配置 ===================");
        return new MongoProperties();
    }

    // ================== MongoDbFactory 配置 ===================

    @Bean
    public MongoDbFactory firstMongoDbFactory(MongoProperties firstMongoProperties) {
        System.out.println("================== firstMongoDbFactory 配置 ===================");
        return new SimpleMongoDbFactory(new MongoClientURI(firstMongoProperties.determineUri()));
    }

    @Bean
    public MongoDbFactory secondMongoDbFactory(MongoProperties secondMongoProperties) {
        System.out.println("================== secondMongoDbFactory 配置 ===================");
        return new SimpleMongoDbFactory(new MongoClientURI(secondMongoProperties.determineUri()));
    }

    @Bean
    public MongoDbFactory thirdMongoDbFactory(MongoProperties thirdMongoProperties) {
        System.out.println("================== thirdMongoDbFactory 配置 ===================");
        return new SimpleMongoDbFactory(new MongoClientURI(thirdMongoProperties.determineUri()));
    }

    @Bean
    public MongoDbFactory fourthMongoDbFactory(MongoProperties fourthMongoProperties) {
        System.out.println("================== fourthMongoDbFactory 配置 ===================");
        return new SimpleMongoDbFactory(new MongoClientURI(fourthMongoProperties.determineUri()));
    }

    // ================== MongoTemplate 配置 ===================

    @EnableMongoRepositories(
            basePackages = {
                    "cn.net.springboot.data.migrate.multimongo.dao.first",
                    "cn.net.springboot.data.migrate.convert.repository",
            },
            mongoTemplateRef = "firstMongoTemplate"
    )
    public class FirstMongoTemplate {
        @Bean
        public MongoTemplate firstMongoTemplate() {
            return new MongoTemplate(firstMongoDbFactory(firstMongoProperties()));
        }
    }

    @EnableMongoRepositories(basePackages = "cn.net.springboot.data.migrate.multimongo.dao.second", mongoTemplateRef = "secondMongoTemplate")
    public class SecondMongoTemplate {
        @Bean
        public MongoTemplate secondMongoTemplate() {
            return new MongoTemplate(secondMongoDbFactory(secondMongoProperties()));
        }
    }

    @EnableMongoRepositories(basePackages = "cn.net.springboot.data.migrate.multimongo.dao.third", mongoTemplateRef = "thirdMongoTemplate")
    public class ThirdMongoTemplate {
        @Bean
        public MongoTemplate thirdMongoTemplate() {
            return new MongoTemplate(thirdMongoDbFactory(thirdMongoProperties()));
        }
    }

    @EnableMongoRepositories(basePackages = "cn.net.springboot.data.migrate.multimongo.dao.fourth", mongoTemplateRef = "fourthMongoTemplate")
    public class FourthMongoTemplate {
        @Bean
        public MongoTemplate fourthMongoTemplate() {
            return new MongoTemplate(fourthMongoDbFactory(fourthMongoProperties()));
        }
    }
}

 

Springboot 2.X 整合mongo 多数据源动态切换 初始化工作 加入如下依赖 <!--mongodb依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>2.2.5.RELEASE& 阅读详情

相关推荐

SCU【C】程序设计基础期末安全项目lab2-Deadbeef-writeup(附题目&源码)

项目名称(本质:栈溢出攻击)【源码在文首】和lab1一样,此题又是美国卡耐基梅隆大学的平时作业哈哈哈! 项目要求是把栈溢出,强行更改函数返回值,输出0xdeadbeef。

2301_79586491的博客 1544

Spring Boot怎么实现配置任意数量Mongodb数据源

目录Spring Boot怎么实现配置任意数量Mongodb数据源环境介绍多个数据源如何在配置文件中配置动态注册BeanBeanDefinitionRegistry介绍如何构造BeanDefinition完整代码编写单元测试代码核对数据 Spring Boot怎么实现配置任意数量Mongodb数据源 本文会教大家如何按需配置MongoDB数据源,代码写完后,支持配置任意数量的MongDB数据源,只需要根据运维需要手动增加数据源的配置,不需要再修改代码。 如果大家只想了解配置1个或有限数量的多个数据源,

Java技术栈,分享不断学习、不断超越、不断积累的历程! 1200

通达信【雷霆尊者排序】实战指南:高胜率竞价指标解析与优化策略

本文详细解析了通达信【雷霆尊者排序】指标在集合竞价阶段的应用,提供从基础设置到实战解码的完整指南。文章重点剖析了‘雷霆’、‘使者’、‘精选’等核心信号的逻辑与共振策略,并分享了如何结合K线、市场情绪进行综合研判与风险控制,旨在帮助短线交易者提升早盘选股效率与胜率。

pear55的博客 952

使用 Spring Data MongoDB 连接到多个数据库

在本文中,我们了解了如何使用 Spring Data MongoDB 创建多个连接。我们看到了如何添加凭据以进行身份验证。最重要的是,我们已经了解了如何创建配置,其中之一必须是主 bean。最后,我们使用 Docker 和 Spring Boot 测试针对正在运行的 MongoDB 实例添加了一些测试用例.

白石的专栏 2072

3D Gaussian Splatting环境配置和运行

使用conda命令根据environment.yml文件创建虚拟环境时,安装的pytorch是使用conda install 命令来安装的,实际上并不能成功安装带有gpu的pytorch,而这两个模块的安装依赖于带gpu的pytorch。如果不注释掉这三行,直接安装会报错

m0_46360757的博客 3326

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个时候如果有一个库可以帮助我们和plc设备进行modbus通信,那就非常方便的。目前NuGet下关于modbus的函数库还是有一些的,比如EasyModbus。

嵌入式-老费,一个分享专业嵌入式知识的blog 2530

SpringBoot mongodb 多数据源配置

所以我想到的方法便是根据不同的mongodb数据源配置生成不同的mongoTemplate,用不同的mongoTemplate对不同mongodb库进行操作。在开发需求当中,遇到了一个需求,需要引入一个mongodb库,但是项目中已经引用了另外一个库,所以需要配置多个mongodb数据源。3. 使用不同的mongoTemplate执行操作(mongodb基础的操作这里就不介绍了)根据不同的mongodb数据源配置生成不同的mongoTemplate。项目中mongodb操作都是通过。

lgk601abc的博客 1357

【数据集】中国2003年至2022年全天空每日气温数据集

中国2003年至2022年全天空每日气温数据集

WW、forever的博客 603

mongodb配置0-n个数据库连接

3.引入0个mongodb数据源时,由于导入了mongodb的依赖,系统会默认链接localhost的数据库,但是会连接失败,只需在yml文件中加入如下配置即可。(2)@ConditionalOnProperty(name = "data.mongodb.uri.first")注解的意义在于,当yml文件中。(3)代码中若注入此bean,可能会报bean无法注入的异常,建议使用以下方法获取bean。data.mongodb.uri.first没值的时候,不会生成对应的bean。2.本地代码中配置类。

weixin_52044965的博客 313

【AI智能体】全场景AI智能体工作台WorkBuddy实战操作详解

全场景AI智能体工作台WorkBuddy实战操作详解

congge 5494

YOLO小目标检测优化:9种实用方案,准确率直接提升15%

小目标检测是个系统工程,没有银弹,但有明确的优化路径。优先搞数据。Copy-Paste + 提升分辨率,这俩加起来成本最低、收益最大,能解决80%的小目标问题。别一上来就改模型结构。调参走在改结构前面。锚框聚类、损失加权、增强优化,这些都是零成本的,先做满了再说改模型的事。P2层是大杀器,但不要轻易用。加了P2层,TensorRT部署、后处理、速度都要跟着调,工程化工作量翻倍。数据和训练做到位还不够,再加也不迟。滑动窗口是兜底的。能从训练端解决的问题,就不要拖到推理端。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 187

Spring Boot中的Mongodb多数据源扩展

在日常工作中,我们通过Spring Data Mongodb来操作Mongodb数据库,在Spring Boot中只需要引入spring-boot-starter-data-mongodb即可。 然后配置连接信息如下: spring.data.mongodb.uri=mongodb://localhost:27017/test 或者 pring.data.mongodb.authenticati...

u010889990的专栏 1198

Oracle EBS FA 如何打开关闭的资产会计期间?

用户“运行折旧”,误勾选为“关闭期间”,还有一部分资产还需要操作报废和调整,希望后台打开关闭的资产会计期。

陈显平的专栏-Oracle EBS 1031

MongoDB 4.x——SpringBoot框架整合

当下Java Web最流行的脚手架。​”SpringBoot为什么会这么流行?这点与Spring框架是脱不开关系的。我们都知道,Java是一门面向对象的语言,为了更好地实现代码模块化及复用,面向对象定义了封装、多态继承等特性。一个类的成员变量可以引用其他的类,于是在对象与对象之间就产生了依赖。而在以前的许多大型项目中,由于要实现的功能代码非常多,往往需要大量重复性地构建对象,以及设置依赖关系的代码,长期下来则会导致代码臃肿不堪。

吴声子夜歌的博客 196

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

springboot2.x整合mybatis-plus多数据源、mongodb,redis

1.redis配置 package com.framework.api.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "redis") public class RedisConfigPrope

xjmfc的博客 4255

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SpringBoot中MongoDB的使用

SpringBoot中MongoDB的使用

YIYIYI 8365

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mongo2.x java_崛起于Springboot2.X之Mongodb多数据源处理(35)

多数据源:4个mongodb库!目录结构图: 1、添加pom依赖org.springframework.bootspring-boot-starter-data-mongodborg.springframework.bootspring-boot-starter-weborg.projectlomboklomboktrueorg.springframework.bootspring-boot-st...

weixin_35562225的博客 185

SpringBoot 整合 MongoDB 实现文档存储

MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由C++语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前 NoSql 数据库中比较热门的一种。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

dcp666的博客 706

Springboot : SpringBoot中MongoDB的使用

MongoDB 是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多。由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置漏洞被攻击,数据被删,引起了人们的注意,同时也说明了很多公司生产中大量使用 Mongodb。 MongoDB 简介 MongoDB(来自于英文单词“Humongous”,中文含义为“...

weixin_30764137的博客 74

SpringBoot 中 mongodb 的使用

mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多。由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置漏洞被攻击,数据被删,引起了人们的注意,感兴趣的可以看看这篇文章:场屠戮MongoDB的盛宴反思:超33000个数据库遭遇入侵勒索,同时也说明了很多公司生产中大量使用mongodb。 http://www.freebuf.com/articles/database/125127.html mongodb简介

风雪夜归人的博客 339

springboot之MongoDB的简单使用

MongoDB 简介 MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由C++语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前 NoSql 数据库中比较热门的一种。 MongoDB 是一个介于关...

霓虹深处 517

spring-boot配置mongo多数据源

第一次接触配置mongodb的多数据源,与自动装配的单数据源mongodb配置有些差距,在大神的指导下才完成的,愁人啊,用到了禁止springboot自动装配,还是看代码吧(单数据源与多数据源最大的区别在于springboot默认使用spring-boot-starter-data-mongodb时是进行自动装配的,但是自动装备只会装配一个数据源,所以要改为手动装配 PS:在做自作手动装配...

鹏的博客 531

[Carefree MongoDB] Spring Boot MongoDB 自动化配置

最近在制作一个 spring boot 小应用时使用了 MongoDB,鉴于官方库的简陋配置,决定自己造个轮子,源码发布在 GitHub Carefree MongoDB,jar 已在中央仓库发布,可以直接引用。 English | 中文 Spring Data MongoDB 为面向 MongoDB 的开发提供了一套基于 Spr...

weixin_34414196的博客 599

springboot:Spring boot中mongodb的使用(山东数漫江湖)

mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多。由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置漏洞被攻击,数据被删,引起了人们的注意,感兴趣的可以看看这篇文章:场屠戮MongoDB的盛宴反思:超33000个数据库遭遇入侵勒索,同时也说明了很多公司生产中大量使用mongodb。 mo...

abc_1114的博客 107
上一篇: MNC、MCC、LAC、CID都是些什么东西?
下一篇: 将 notepad++ 注册到鼠标右键菜单
who7708
博客等级 码龄16年 8粉丝 35原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值