当前位置: 首页 > news >正文

Springboot+Druid(可切换Hikari)+Mybatis-plus+mysql+hive的多数据源项目配置

1.搭建一个springboot项目,不会的搜一下,很简单这里不做赘述。

2.首先你搭建的springboot能正常启动之后,pom文件添加如下依赖:

 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version> <!-- 选择自己合适的版本,druid连接池依赖,Hikari是springboot自带的不用引入依赖 --></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><!--Mybatis-plus依赖--><version>3.5.9</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!-- 多数据源依赖 --><version>3.5.0</version></dependency><!--hive依赖,自行选择版本--><dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>4.0.1</version><classifier>standalone</classifier><exclusions><exclusion><groupId>org.eclipse.jetty</groupId><artifactId>*</artifactId></exclusion><exclusion><groupId>org.apache.hive</groupId><artifactId>hive-shims</artifactId></exclusion><exclusion><groupId>org.glassfish</groupId><artifactId>javax-el</artifactId></exclusion><!-- 其他可能的排除项 --></exclusions></dependency>

3.编写yaml文件(这里的druid其他自定义参数没配置,可自行查阅资料完善,以下配置能支持一般使用):

spring:datasource:dynamic:primary: mysqlstrict: falsedatasource:mysql:url: jdbc:mysql://你的IP:端口/数据库?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=trueusername: rootpassword: wC62vHcv43!e#hive配置hive:url: 你的urlusername: usernamepassword: passworddriver-class-name: org.apache.hive.jdbc.HiveDriverhikari:      #只是为了让控制台不警告,可选,不影响使用connection-timeout: 30000  # 连接超时时间(毫秒)validation-timeout: 5000   # 验证超时时间(毫秒)

4.到此,配置以及准备完成,编写两个数据源的bean配置类:

mysql配置类:

@Configuration
public class MysqlDataSourceConfig {@Value("${spring.datasource.dynamic.datasource.mysql.url}")private String mysqlUrl;@Value("${spring.datasource.dynamic.datasource.mysql.username}")private String mysqlUsername;@Value("${spring.datasource.dynamic.datasource.mysql.password}")private String mysqlPassword;@Bean(name = "mysqlDataSource")@Primary  // 默认数据源public DataSource mysqlDataSource() {DruidDataSource config = new DruidDataSource(); //换成Hikari连接池只需要将这一行代码改为HikariConfig config = new HikariConfig();config.setUrl(mysqlUrl);config.setUsername(mysqlUsername);config.setPassword(mysqlPassword);return config;}@Bean(name = "mysqlJdbcTemplate")public JdbcTemplate mysqlJdbcTemplate(@Qualifier("mysqlDataSource") DataSource dataSource) {return new JdbcTemplate(dataSource);}
}

hive配置类:

@Configuration
public class HiveDataSourceConfig {@Value("${spring.datasource.dynamic.datasource.hive.url}")private String hiveUrl;@Value("${spring.datasource.dynamic.datasource.hive.username}")private String hiveUsername;@Value("${spring.datasource.dynamic.datasource.hive.password}")private String hivePassword;@Value("${spring.datasource.dynamic.datasource.hive.driver-class-name}")private String hiveDriverClassName;@Bean(name = "hiveDataSource")public DataSource hiveDataSource() {DruidDataSource config = new DruidDataSource();//换成Hikari连接池只需要将这一行代码改为HikariConfig config = new HikariConfig();config.setUrl(hiveUrl);config.setUsername(hiveUsername);config.setPassword(hivePassword);config.setDriverClassName(hiveDriverClassName);return config;}@Bean(name = "hiveJdbcTemplate")public JdbcTemplate hiveJdbcTemplate(@Qualifier("hiveDataSource") DataSource dataSource) {return new JdbcTemplate(dataSource);}
}

5.使用:

至于mysql,正常照mybatisplus的使用,mapper,service调用即可

对于hive:

在需要用到的类注入

@Resource
@Qualifier("hiveJdbcTemplate")
private JdbcTemplate hiveJdbcTemplate;

使用这个template去执行SQL即可:

  public void test(){String query="******"hiveJdbcTemplate.execute(query);}  

那么,简述一下Druid和Hikari的区别吧:

1. 设计目标
  • Druid:由阿里巴巴开发,不仅是一个高性能的数据库连接池,还集成了监控、SQL解析和执行计划分析等功能。它被设计为一个综合性的数据库连接管理和优化工具。
  • HikariCP:由Brett Wooldridge创建,专注于成为最快速、最小化开销的连接池。它的设计理念是简单、高效,只做连接池该做的事情,不做过多的附加功能。
2. 性能
  • Druid:虽然Druid也具有良好的性能表现,但其丰富的特性可能会带来额外的开销。在某些情况下,这些附加功能(如SQL解析、日志记录等)可能会影响性能。
  • HikariCP:以其出色的性能著称,尤其是在高并发环境下,HikariCP通常比其他连接池更快。它通过减少锁争用和其他优化技术来达到这一点。
3. 配置复杂度
  • Druid:提供了大量的配置选项,允许用户根据需要进行详细的调整。这使得它非常适合那些对连接池有特定需求的应用程序,但也可能增加了配置的复杂性。
  • HikariCP:配置相对简单,只有几个关键参数需要设置。对于大多数应用程序来说,默认配置已经足够好,不需要太多的调整。
4. 监控和诊断
  • Druid:内置了强大的监控和统计功能,可以实时查看连接池的状态、SQL执行情况等。这对于调试和性能优化非常有用。
  • HikariCP:没有内置的监控功能,但是可以通过集成外部监控工具(如Micrometer)来实现监控。HikariCP的设计哲学是保持核心功能的简洁性,将监控等功能留给第三方库处理。

至此,搭建完成,有问题的可评论区留言。

相关文章:

Springboot+Druid(可切换Hikari)+Mybatis-plus+mysql+hive的多数据源项目配置

1.搭建一个springboot项目&#xff0c;不会的搜一下&#xff0c;很简单这里不做赘述。 2.首先你搭建的springboot能正常启动之后&#xff0c;pom文件添加如下依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid</arti…...

Git使用步骤

Git 是一个分布式版本控制系统&#xff0c;广泛用于软件开发和其他需要跟踪文件变更的项目。以下是 Git 的基本使用方法和一些常用命令的详细说明。 安装 Git 在大多数操作系统上&#xff0c;你可以通过包管理器安装 Git&#xff1a; Windows: 下载并安装 Git for Windows。…...

Python+OpenCV系列:AI看图识人、识车、识万物

在人工智能风靡全球的今天&#xff0c;用 Python 和 OpenCV 结合机器学习实现物体识别&#xff0c;不仅是酷炫技能&#xff0c;更是掌握未来的敲门砖。本篇博文手把手教你如何通过摄像头或图片输入&#xff0c;识别人、动物、车辆及其他物品&#xff0c;让你的程序瞬间具备 AI …...

springboot449教学资源共享平台(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统教学资源共享平台信息管理难度大&#xff0c;容错率低&am…...

类OCSP靶场-Kioptrix系列-Kioptrix Level 4

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3.目录遍历 1.4. 敏感信息 2.漏洞发现 2.1.登录框万能密码 2.2.系统用户密码-ssh链接 2.3.mysql-udf提权 一、前情提要 kali黑客-利用searchsploit搜索exp一键化攻击-CSDN博客 一篇文章带你理…...

贪心算法在背包问题上的运用(Python)

背包问题 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 这就是典型的背包问题(又称为0-1背包问题),也是具体的、没有经过任何延伸的背包问题模型。 背包问题的传统求解方法较为复杂,现定义有一个可以载重为8kg的背…...

POD 存储、PV、PVC

目录 容器如何持久化存储&#xff1f; PV和PVC 为什么不能直接在 Pod 或容器中存储数据&#xff1f; 什么是 PV和 PVC&#xff1f; 可以使用本地磁盘空间创建PV吗&#xff1f; 如何让客户端通过ftp上传到远端服务器的POD里面&#xff1f; 另一个POD想访问ftp的POD里面的…...

C中strlen和sizeof的区别

1、代码如下&#xff1a; #include<stdio.h>int main() {char a[10] { h,e,l,l,0};printf("%d\n",strlen(a));printf("%d\n", sizeof(a));return 0; } 2、运行结果如下&#xff1a;...

WSL2内部的Ubuntu怎么设置网络内桥接模式,弄了好久老是不成功,怎么办?

环境: Win10专业版 WSL2 Ubuntu22.04 问题描述: WSL2内部的Ubuntu怎么设置网络内桥接模式 解决方案: 方法一 1.控制面板开启,Hyper-V 管理器 2.重启电脑 3…创建外部虚拟交换机 打开 Hyper-V 管理器,在右侧操作面板中点击“虚拟交换机管理器”。 选择“创建虚…...

Linux环境下 搭建ELk项目 -单机版练习

前言 ELK 项目是一个由三个开源工具组成的日志处理和分析解决方案&#xff0c;ELK 是 Elasticsearch、Logstash 和 Kibana 的首字母缩写。这个项目的目标是帮助用户采集、存储、搜索和可视化大量的日志和事件数据&#xff0c;尤其是在分布式系统中。下面是每个组件的概述&…...

ubuntu20.04安装mysql5.7

安装之前要确保之前没安装过或者安装后卸载干净了&#xff0c;不然后面的配置文件可能会报错。 1. 下载安装包 打开链接 downloads.mysql.com/archives/co… 选择相应版本进行下载&#xff0c;这里mysql版本选择 5.7.35&#xff0c;系统选择Ubuntu Linux&#xff0c;选择64位…...

MacPorts 安装 Tengine

创建 Portfile 以下是我参考 nginx 调整后的 Portfile&#xff0c;如需安装指定版本&#xff0c;除了修改版本号之外还需要修改 checksums 里的 sha256 sha256 值需下载 Tengine 源码文件&#xff08;tar.gz&#xff09;进行计算 模块的调整在最后的 configure.args-append …...

Git安装及基础学习

Git学习 Git安装 概述&#xff1a; Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理 从很小到非常大的项目版本管理&#xff0c;是目前使用范围最广的版本 管理工具。 下载安装&#xff1a; 下载地址&#xff1a;https://git-scm.com/ 下载后傻瓜式一键安…...

【celery】任务有时候不执行

celery任务有时执行&#xff0c;有时不执行&#xff0c;这种情况是任务被冒领&#xff1b;有时执行说明这个方法可以使用&#xff0c;有时不执行通常是被使用同一个消息队列的进程冒领了&#xff1b; 解决 Redis&#xff1a;指定一个分块就行了...

【恶意软件检测论文】通过提取 API 语义来实现的一个新颖的安卓恶意软件检测方法

目录 摘要1. 引言2. 相关工作2.1. 基于重新训练的恶意软件检测2.2. 基于应用关系图的恶意软件检测2.3. 基于异常样本识别的恶意软件检测2.4. 基于API聚类的恶意软件检测 3. AMDASE概述4. 基于语义距离的API聚类4.1. API特征提取4.2. API句子生成4.3. API句子编码4.4.聚类中心生…...

什么,不用 Tomcat 也能运行 Java web?

在 Java web 开发领域&#xff0c;传统的 Tomcat 服务器一直占据着重要地位。但如今&#xff0c;Blade 框架的出现为我们提供了一种全新的开发体验&#xff0c;它无需依赖 Tomcat 便可运行 Java web 应用。 一、Blade 框架简介 是一款轻量级且高性能的 Java web 框架。其设计理…...

华为HarmonyOS实现跨多个子系统融合的场景化服务 -- 1 构建快速验证手机号Button

场景介绍 快速验证手机号Button功能用于帮助开发者向用户发起手机号申请&#xff0c;应用在满足《常见类型移动互联网应用程序必要个人信息范围规定》&#xff08;对第三方网站的内容&#xff0c;华为公司不承担任何责任&#xff09;中使用手机号的必要业务场景&#xff0c;经…...

王佩丰24节Excel学习笔记——第十一讲:Vlookup函数

【以 Excel2010 系列学习&#xff0c;用 Office LTSC 专业增强版 2021 实践】 【本章小技巧】 掌握vlookup使用方法&#xff0c;选区的第一列一定是查询参数条件一。使用通配符查询。vlookup 限 255 位长度。掌握日常使用场景。使用vlookup模糊匹配查询个税 一、使用Vlookup函…...

【QT实战の心情笔记】

文章目录 界面布局主要界面分为三部分&#xff1a;1. 笔记列表区域2. 笔记内容编辑区域3. 操作按钮区域 Qt Designer 界面设计步骤完整界面布局图各控件设置和属性Qt Designer 文件 (.ui) 数据库表结构SQL 表结构&#xff1a; 逻辑代码1. 项目结构2. Note 类 (Note.h 和 Note.c…...

图像生成工具WebUI

介绍 Stable Diffusion WebUI&#xff08;AUTOMATIC1111&#xff0c;简称A1111&#xff09;是一个为高级用户设计的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它提供了丰富的功能和灵活性&#xff0c;以满足复杂和高级的图像生成需求。如今各种人工智能满天飞&…...

Steam创意工坊模组下载终极指南:轻松获取1000+游戏模组的完整解决方案

Steam创意工坊模组下载终极指南&#xff1a;轻松获取1000游戏模组的完整解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为无法下载Steam创意工坊模组而烦恼吗&…...

5分钟掌握Sketch Measure:设计师必备的设计标注神器完整指南

5分钟掌握Sketch Measure&#xff1a;设计师必备的设计标注神器完整指南 【免费下载链接】sketch-measure Make it a fun to create spec for developers and teammates 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-measure 还在为设计稿标注而烦恼吗&#xff…...

高性能PDF文本提取引擎:基于Poppler C++的pdftotext架构解析与性能优化实践

高性能PDF文本提取引擎&#xff1a;基于Poppler C的pdftotext架构解析与性能优化实践 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext 在当今数字化办公环境中&#xff0c;PDF文档作为信息交换的标准格式…...

3个思维转变:用Obsidian Homepage打造你的第二大脑控制中心

3个思维转变&#xff1a;用Obsidian Homepage打造你的第二大脑控制中心 【免费下载链接】obsidian-homepage Obsidian homepage - Minimal and aesthetic template (with my unique features) 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-homepage 你是否曾…...

Go语言实现轻量级C2框架:从零构建命令控制原型

1. 项目概述&#xff1a;一个轻量级、可自托管的C2框架初探最近在整理自己的安全研究环境时&#xff0c;发现很多开源C2&#xff08;Command and Control&#xff09;框架要么过于庞大&#xff0c;依赖复杂&#xff0c;要么功能过于单一&#xff0c;难以满足从学习到模拟测试的…...

拯救你的C盘空间:用FreeMove实现无痛文件迁移的完整指南

拯救你的C盘空间&#xff1a;用FreeMove实现无痛文件迁移的完整指南 【免费下载链接】FreeMove Move directories without breaking shortcuts or installations 项目地址: https://gitcode.com/gh_mirrors/fr/FreeMove 你是否经常看到C盘变红的警告&#xff0c;却不敢随…...

输入输出:iostream 为什么不是 printf 的替代品

文章目录引言一、printf 的优雅与致命缺陷1.1 printf 为什么好用1.2 三个致命缺陷二、iostream 的哲学&#xff1a;类型安全 可扩展2.1 基本用法2.2 标准流一览2.3 输入&#xff1a;cin 为什么比 scanf 安全三、自定义类型的输出&#xff1a;让 printf 永远做不到的事四、格式…...

UWB定位标签天线怎么选?PATCH、PIFA、DIPOLE三种方案全对比(含NXP/Qorvo模组适配建议)

UWB定位标签天线选型指南&#xff1a;PATCH、PIFA、DIPOLE三大方案深度解析与工程决策 在物联网定位技术领域&#xff0c;超宽带(UWB)凭借其厘米级精度和强抗干扰能力&#xff0c;已成为工业定位、智能仓储和医疗设备追踪的核心解决方案。而天线作为UWB系统的"感官器官&qu…...

RPFM:重新定义全面战争MOD开发的工作流革命

RPFM&#xff1a;重新定义全面战争MOD开发的工作流革命 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https://gitcode.com/g…...

LM567锁相环芯片实测:手把手教你搭建10kHz音频信号检测电路(附面包板接线图)

LM567锁相环芯片实战&#xff1a;从零构建10kHz音频检测电路全流程解析 在电子设计领域&#xff0c;频率检测一直是个既基础又关键的课题。无论是红外遥控信号解码、超声波测距&#xff0c;还是电磁导航系统&#xff0c;精准的频率识别都是实现功能的前提。而LM567这款经典的锁…...