mongo多数据源动态配置

mongo的配置信息默认使用配置文件的spring.data.mongodb前缀的信息进行配置,但是我想另外配个其他前缀的信息如logging.data.mongodb,区分默认的mongo数据源。这个就需要建个mongo配置类,以logging.data.mongodb前缀去动态配置mongo数据源。

配置类

/*** 日志存储在mongo配置* @author lfq*/
@Configuration
@EnableMongoRepositories(basePackages = "com.lfq.logging.dao", //如果有继承MongoRepository的dao层,这里需扫描使用该数据源的dao下的包mongoTemplateRef = "loggingMongoTemplate")
@ConditionalOnProperty(value = "logging.dbstore.mongo.enabled", havingValue = "true")
@PropertySource(value = {"classpath:application-logging.properties"}) //(这里是从application-logging.properties读取,如果不需要另外建配置文件,可以去掉)
public class LoggingMonoManageConfiguration {@Bean(name = "loggingMongoProperties")@ConfigurationProperties(prefix = "logging.data.mongodb")public MongoProperties loggingMongoProperties() {return new MongoProperties();}@Bean(name = "loggingMongoTemplate")public MongoTemplate primaryMongoTemplate(@Qualifier("loggingMongoProperties") MongoProperties loggingMongoProperties) throws Exception {return new MongoTemplate(loggingManagerFactory(loggingMongoProperties));}@Bean(name = "loggingMongoManagerFactory")public MongoDbFactory loggingManagerFactory(@Qualifier("loggingMongoProperties") MongoProperties mongo){MongoClientOptions.Builder builder = new MongoClientOptions.Builder();builder.writeConcern(WriteConcern.MAJORITY);//创建一个用户认证信息MongoCredential credential = MongoCredential.createCredential(mongo.getUsername(), mongo.getDatabase(), mongo.getPassword());//封装MongoDB的地址和端口ServerAddress address = new ServerAddress(mongo.getHost(), mongo.getPort());MongoClient mongoClient =  new MongoClient(address,credential,builder.build());return new SimpleMongoDbFactory(mongoClient, mongo.getDatabase());}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LCR 179. 查找总价格为目标值的两个商品 - 力扣

1. 题目 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。 2. 示例 3. 分析 我们首先想到暴力解法,这道题目的暴力还是比较简单的,列举每个数的情况即可…

C/C++的内存管理与初阶模板

引言 我们在学习C的时候,会经常在堆上申请空间,所以这个时候就体现了内存管理遍历。 图下是我们常见的计算机的内存划分: 我也在图下对部分变量存在的位置,及时标注。(如果有任何问题可以联系博主修改,感谢大家。) 那…

智慧油气场站:油气行业实现数字化转型的关键一步

智慧油气场站:油气行业实现数字化转型的关键一步 在现代社会,能源供应是国家经济发展和人民生活的重要保障。而油气场站作为能源的重要供应和储存基地,扮演着至关重要的角色。此外,油气场站还可以为石油和天然气的生产提供支持。…

Docker安装主从数据库

我自己的主数据库名字 user_muster 密码是123456 从数据库 就是slave2 名字是root 密码是123456 首先开启docker后直接执行命令 docker run -d \ -p 3307:3306 \ -v /xk857/mysql/master/conf:/etc/mysql/conf.d \ -v /xk857/mysql/master/data:/var/lib/mysql \ -e MYSQL_…

云计算与大数据课程笔记(二)之Google云计算框架辅助笔记(上)

Chunk & Block 在GFS中,Chunk默认大小是64MB。作者在参加云计算相关竞赛时发现有题目说Hadoop的Block默认是64MB,这和作者之前学的128MB不太一样,故进行以下整理: 在Hadoop分布式文件系统(HDFS)中&…

Threejs用下个点方法实现模型沿着轨道行驶

上一文中实现了用模型所在点的切线方式确定模型的朝向,这个章节是对上个章节的补充,用一种更简单的方式实现小车沿着轨道方向移动,如上文前半部分内容,需要创建场景,轨道,加载车的模型,一切就绪…

mac 配置.bash_profile不生效问题

1、问题描述 mac系统中配置了环境变量只能在当前终端生效,切换了终端就无效了,查了下问题所在。mac系统会预装一个终极shell - zsh,环境变量读取在 .zshrc 文件下。 2、解决方案 1、切换终端到bash 切换终端到bash chsh -s /bin/bash 切换终端…

【随笔】程序员的金三银四求职宝典,每个人都有最合适自己的求职宝典

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】系列文章,这一次的话题是《程序员的金三银四求职宝典》 目录 背景能力流程图求职宝典就业数据人数曲线图增长率柱状图 其他建议文章推荐 背景 随着春天的脚步渐近&#xff0…

【JavaEE初阶】 关于JVM垃圾回收

文章目录 🍃前言🎋死亡对象的判断算法🚩引用计数算法🚩可达性分析算法 🌳垃圾回收算法🚩标记-清除算法🚩复制算法🚩标记-整理算法🚩分代算法🎈哪些对象会进入…

Redis与 Memcache区别

Redis与 Memcache区别 1 , Redis 和 Memcache 都是将数据存放在内存中,都是内存数据库。不过 Memcache 还可用于缓存 其他东西,例如图片、视频等等。 2 , Memcache 仅支持key-value结构的数据类型,Redis不仅仅支持简单的key-value类型的数据&…

STM32 | Proteus 8.6安装步骤(图文并茂)

01 Proteus 8.6 简介 Proteus 8.6 是一款功能强大的电子设计自动化软件,广泛用于电路设计、仿真和PCB布局。它为电子工程师和学生提供了一个全面的工具集,用于设计和验证各种电路和电子设备。Proteus 8.6 包括了以下几个主要特性: 1. 电路设…

低代码与微服务:重塑软件开发的未来

在软件开发的浩瀚宇宙中,新的技术和理念不断涌现,为开发者提供了更为广阔的创新空间。其中,“低代码”与“微服务”无疑是两颗璀璨的明星,它们正在改变着传统的软件开发模式,为开发者带来了更高效、更灵活的开发体验。…

Java实战:Spring Boot+Netty+Websocket实现后台向前端推送信息

本文将详细介绍如何使用Spring Boot集成Netty和Websocket,实现后台向前端推送信息的功能。我们将深入探讨Netty和Websocket的原理,以及如何利用Spring Boot简化Netty的集成和配置。 1. 引言 在当今的互联网应用中,实时通信变得越来越重要。…

力扣404. 左叶子之和(java)

//当前节点的左子树不为空 且是叶子节点 root.left ! null &&root.left.leftnull && root.left.rightnull/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* …

git分布式管理-头歌实验搭建Git服务器

一、Git服务器搭建 任务描述 虽然有提供托管代码服务的公共平台,但是对一部分开发团队来说,为了不泄露项目源代码、节省费用及为项目提供更好的安全保护,往往需要搭建私有Git服务器用做远程仓库。Git服务器为团队的开发者们,提供了…

洛谷 P8816 [CSP-J 2022] 上升点列(T4)

目录 题目传送门 算法解析 最终代码 提交结果 尾声 题目传送门 [CSP-J 2022] 上升点列 - 洛谷https://www.luogu.com.cn/problem/P8816 算法解析 k 0 且 xi, yi 值域不大时,这题是非常简单的 DP,类似「数字三角形」。 记 dp(x,y) 为「以 (x,y) …

Spring中SmartInitializingSingleton、SmartLifecycle和Lifecycle的作用和区别

相同点: ​ SmartInitializingSingleton和Lifecycle、SmartLifecycle都是在所有的单实例bean创建(getBean方法)之后执行。 不同点: SmartInitializingSingleton优先于Lifecycle、SmartLifecycle执行。SmartInitializingSingleton只有一个afterSinglet…

tomcat基础介绍

目录 一、Tomcat的基本介绍 1、Tomcat是什么? 2、Tomcat的配置文件详解 3、Tomcat的构成组件 6、Tomcat的请求过程 一、Tomcat的基本介绍 1、Tomcat是什么? Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器…

svg图标转组件引入项目中

svg图标转组件引入项目中 您想知道关于 的更多信息吗? 并不是一个特定的 HTML 元素,它更可能是一个占位符,代表一个在 Vue.js 中的动态组件。 在 Vue.js 中,动态组件可以根据不同的数据或状态加载不同的组件。 元素通常用于在模板中声明动态组件的占位符。具体来说,你可…

[leetcode 189][轮转数组]

[leetcode 189][轮转数组] 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右…