67、数据源配置 及 配置多个数据源--C3P0 数据源 和 Hikari 数据源

news2024/11/25 11:51:50

★ Spring Boot如何选择DataSource数据源

优先级从高到低: HikariCP > Tomcat pooling DataSource > Commons DBCP2
如果要使用Tomcat pooling DataSource这种池化数据源,
那么可以用</exclusions>这个把HikariCP 排除掉,然后springboot就会自动去使用Tomcat pooling DataSource


Spring Boot 的 spring-data-starter-jdbc 默认就自带了 HikariCP 的JAR包。

如果你不指定任何额外信息,Spring Boot默认会为我们创建HikariCP 的数据源。

这样移除这个HikariCP
在这里插入图片描述

★ 数据源相关配置

数据源的通用配置以spring.datasource.*开头的属性进行配置。

spring.datasource.*开头的属性由DataSourceProperties类负责加载、处理。

如果想对特定数据源实现增加配置,可通过特定前缀的属性进行配置,例如:
- spring.datasource.hikari.*:专门配置HikariCP的属性。
- spring.datasource.tomcat.*:专门配置Tomcat池化数据源的属性。
- spring.datasource.dbcp2.*:专门配置DBCP2数据源的属性。


@ConfigurationProperties可修饰类,将该类变成属性处理类。

@ConfigurationProperties还可修饰 @Bean 配置 Bean组件,
此时该注解读取的配置文件中的每个属性都会调用该Bean的一个setter方法
比如在配置文件中读到一个abc属性,它就会尝试调用配置Bean的setAbc()方法

★ 配置第三方数据源(C3P0)

首先需要排除HikariCP依赖库,还要添加C3P0的依赖

▲ 简单配置方式,只要一行(不能定制,早期版本才支持,Spring Boot 2.4开始不再支持):
spring.datasource.type=com.mchange.v2.c3p0.ComboPooledDataSource


▲ 复杂配置(用自定义的数据源代替自动配置的数据源)

(1)先在容器中用@Bean配置一个C3P0数据源
(2)然后用@ConfigurationProperties读取配置属性来对C3P0数据源进行配置

代码演示:配置第三方数据源(比如配置 C3P0 数据源)

在配置文件中写了对应的属性,在配置类中用@ConfigurationProperties读取。
这样就完成了对 C3P0 数据源的配置:
在这里插入图片描述
运行代码,成功查询到数据库的数据,表示这个 C3P0 数据源 配置的没有问题
代码是延用上一篇文章提及的spring data jpa 的 crud 。
其他代码在上一篇 --> 66、Spring Data JPA 的基本功能–CRUD 和 分页 – 可获取
在这里插入图片描述

关于在配置文件中的写法及其写法来源:
1、首先是前缀,在配置类中的bean组件上面添加这个@ConfigurationProperties(“cn.ljh.datasource”),这个bean组件就会去配置文件中读取有这个cn.ljh.datasource开头的属性,如图
在这里插入图片描述
2、关于 cn.ljh.datasource.xxx.xxx,这个 xxx 是怎么来的
可以通过 C3P0的jar包中的类得来的。
具体的各种数据源的配置的写法,都是根据这个类里面的 setter 方法得来的,不是乱写的。
都是固定的。
在这里插入图片描述
也可以这么找
在这里插入图片描述

如图:配置文件中的属性的写法,都是在类中有对应的set方法
在这里插入图片描述
3、关于为什么 cn.ljh.datasource.driver-class 是 driver-class 这个写法
因为配置类中的bean组件的这个@ConfigurationProperties(“cn.ljh.datasource”),该注解读取的每个属性都会调用该Bean的一个setter方法。
比如在配置文件中读到一个【cn.ljh.datasource.initial-pool-size=3】的属性,它就会尝试调用配置bean 的 setInitialPoolSize() 方法。
也就是调用AbstractComboPooledDataSource类中的 setInitialPoolSize() 方法。(这句不知道对不对)

比如:setInitialPoolSize ,写在配置文件中,set 去掉,首字母小写,大写的字母改成小写,然后用 - 隔开,就变成 initial-pool-size

★ 配置多个数据源

可在容器中用@Bean配置多个数据源。

如果希望Spring Boot能依赖注入某个数据源,可用 @Primary 注解修饰它。
——@Primary 注解 修饰的数据源将作为整个应用默认的数据源。

【注意:】,如果你要配置多个数据源,必须自己显式地在容器中配置多个。
            不可能说你配置一个,Spring Boot帮你自动配置一个,这是不可能的。
            Spring Boot自动配置的DataSource Bean有一个@ConditionalOnMissingBean(DataSource.class)。

代码演示:配置多个数据源

上面已经配置了一个 C3P0 的数据源,再配一个 Hikari 的数据源

配置类中的 Datasource Bean
在这里插入图片描述

配置文件:
在这里插入图片描述

写法来源跟第一个一样
可以在jar包找,也可以直接点 HikariDataSource 类进去查看相应的setter方法
在这里插入图片描述

可在容器中用@Bean配置多个数据源。

如果希望Spring Boot能依赖注入某个数据源,可用 @Primary 注解修饰它。
——@Primary 注解 修饰的数据源将作为整个应用默认的数据源。

【注意:】,如果你要配置多个数据源,必须自己显式地在容器中配置多个。
            不可能说你配置一个,Spring Boot帮你自动配置一个,这是不可能的。
            Spring Boot自动配置的DataSource Bean有一个@ConditionalOnMissingBean(DataSource.class)。

@Primary

有多个数据源,但是以哪个为主,就可以通过@Primary这个注解来指定

比如指定 C3P0 这个数据源。
其对应的数据是有数据的。
测试一下

在这里插入图片描述

@Primary 注解 修饰这个 Hikari 数据源 作为整个应用默认的数据源。
测试正确,因为这个 Hikari 数据源对应的数据库什么数据都没有
在这里插入图片描述

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

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

相关文章

前端html原生页面兼容多端H5和移动端适配方案

目录 图片代码最后 图片 是一个注册页面 代码 自己查看效果 注意: 单位全部用rem这样才能保证兼容性适配多端&#xff0c;px转rem转换公式 1px 1/37.5rem 所以想要20px应该对应20/37.5 0.53rem <!DOCTYPE html> <html lang"en"><head><met…

生成随机数列向量并保存到不同的log文件中

随机数列要求 长度 10元素随机每个数列中有两个相同的元素生成到100个文本中每个文本数列数量为 1000 代码 import torch import pickle import numpy as np import os import shutil import loggingdef creat_logger(log_path,logging_name,suf_name):if not os.path.exists(…

免费知识管理系统,让企业管理文档数据更便捷

编者按&#xff1a;本文详细介绍了免费强大的低代码平台在构建知识管理系统方面的优势&#xff0c;并介绍了其知识管理系统独特的功能。只需轻松操作&#xff0c;即可体验到该平台带来的便捷与高效&#xff01;快来了解如何利用这一神奇的工具&#xff0c;让知识管理变得更加轻…

DataX实现Mysql与ElasticSearch(ES)数据同步

文章目录 一、Linux环境要求二、准备工作2.1 Linux安装jdk2.2 linux安装python2.3 下载DataX&#xff1a; 三、DataX压缩包导入&#xff0c;解压缩四、编写同步Job五、执行Job六、定时更新6.1 创建定时任务6.2 提交定时任务6.3 查看定时任务 七、增量更新思路 一、Linux环境要求…

定制化图标——Element UI 组件图标替换指南

本篇博客将介绍如何在使用 Element UI 组件时对原生图标进行定制化替换&#xff0c;提供了适用于满足个性化需求的方法和技巧。 引言 Element UI 是一款基于 Vue.js 的流行 UI 组件库&#xff0c;在前端开发中得到广泛应用。然而&#xff0c;在使用 Element UI 的组件时&#…

java内存泄漏和内存溢出oom排查思路

1、可能出现 2、如何去进行排查 3、visualvm分析 4、Jprofile分析 案例

使用C#开发163邮件发送功能

创建SMTP服务器&#xff08;发送邮件需要SMTP服务器代发&#xff09; 这里介绍创建网易SMTP&#xff08;SMTP是邮件通讯格式&#xff09;服务器&#xff1a; 1.先注册一个163网易邮箱 2.注册成功后登陆该邮箱 3.在该邮箱中找到设置>POP3/SMTP/IMAP点击进入&#xff0c;如下…

【LeetCode-简单题】541. 反转字符串 II

文章目录 题目方法一&#xff1a;双指针 题目 方法一&#xff1a;双指针 题目的意思&#xff1a; 通俗一点说&#xff0c;每隔k个反转k个&#xff0c;末尾不够k个时全部反转&#xff1b; 需要注意右边界的取值 int r Math.min(l k -1,n-1);//取右边界与n-1的最小值 确定边界…

抖店什么类目容易起店?新开通的抖店,最好是从这几个类目做起

我是王路飞。 做抖店之前&#xff0c;你需要先考虑好自己要做什么类目&#xff0c;适合做什么类目。 如果你什么都不了解&#xff0c;单凭自己的个人喜好去确定类目&#xff0c;大概率是做不起来的。 因为你作为一个没有电商经验的新手&#xff0c;并没有足够的能力判断抖音…

2020南京站ICPC F Firworks - 概率 + 三分

几何分布&#xff1a;每次时间发生的概率互不影响 每次成功的概率是1 - &#xff08;1 - p&#xff09;^ k,所以期望就为1 / &#xff08;1 - &#xff08;1 - p&#xff09;^ k&#xff09;。 期望再乘以该次花费的时间就是在第k轮放烟花的答案&#xff0c;然后让我们求最小…

celery app control inspect python后台控制

i tasks.app.control.inspect() # 创建inspect对象&#xff0c;可以操作tasks的队列管理 i.active(safeNone) # Return list of tasks currently executed by workers. i.reserved(safeNone) # Return list of currently reserved tasks, not including scheduled/active c…

2023年华为杯研究生数学建模竞赛辅导

2023年华为杯研究生数学建模竞赛辅导 各研究生培养单位&#xff1a; 中国研究生数学建模竞赛作为教育部学位管理与研究生教育司指导&#xff0c;中国学位与研究生教育学会、中国科协青少年科技中心主办的“中国研究生创新实践系列大赛”主题赛事之一&#xff0c;是一项面向在校…

【SpringBoot】生成二维码、在图片中嵌入二维码

背景 说明&#xff1a;本文章是介绍&#xff0c;在一张背景图片中嵌入生成的二维码和中文文字。 用处&#xff1a;比如活动分享二维码的时候&#xff0c;提供一张背景图&#xff0c;然后在背景图中嵌入二维码等。 注意&#xff1a;二维码和文字的位置需要你自行调整。 一、依赖…

el-dialog__body的border-radius属性失效解决思路

我的代码 .select-page :deep(.el-dialog__body) {padding: 0;width: 39.35vw;height: 60.03vh;background: #FFFFFF;border-radius: 3.78vh; }我查到的解决方案&#xff1a; 1、设置border&#xff1a;none; 去掉边框&#xff1b; 2、设置border-radius:40px; &#xff1b; 3…

电工-实验图解二极管伏安特性曲线和主要参数

实验图解二极管伏安特性曲线和主要参数 晶体二极管主要是由一个PN结构成&#xff0c;因此它应该与PN结具有相同的特性&#xff0c;即具有单向导电性。下面介绍加在二极管两端的电压和流过二极管的电流之间的关系。即二极管的伏安特性及二极管主要参数。 二极管伏安特性曲线 …

Java高级: 反射

目录 反射反射概述反射获取类的字节码反射获取类的构造器反射获取构造器的作用反射获取成员变量&使用反射获取成员方法反射获取成员方法的作用 反射的应用案例 接下来我们学习的反射、动态代理、注解等知识点&#xff0c;在以后开发中极少用到&#xff0c;这些技术都是以后…

李佳琦掉粉,国货品牌却从“商战大剧”走向“情景喜剧”

李佳琦直播间带货怼网友&#xff0c;“哪里贵了&#xff0c;国货很难的”“这么多年工资没涨&#xff0c;有没有认真工作&#xff1f;”本人事后垂泪道歉仍掉粉百万&#xff0c;但是闻风而来的国货品牌却迎来了一场流量盛宴。 从蜂花蹲点“捡”粉丝&#xff0c;上架三款79元洗…

多元函数的偏导数

目录 偏导数的定义 二元函数偏导数的几何意义 高阶偏导数 全微分 偏导数的定义 偏导数是一种特殊的数学概念&#xff0c;它是针对一个多变量的函数在某个自变量上的导数。 具体来说&#xff0c;对于一个有多个自变量的函数yf(x0, x1, xj, ..., xn)&#xff0c;在自变量xk固…

TCP特性的滑动窗口,流量控制

目录 一、TCP特性滑动窗口 二、TCP特性流量控制&#xff08;作为滑动窗口的补充&#xff09; 一、TCP特性滑动窗口 提高传输效率&#xff08;更准确的说&#xff0c;让TCP在可靠传输的前提下&#xff0c;效率不太拉跨&#xff09;&#x1f49b; 当然你要是想让TCP媲美UDP&…

清水模板是什么材质?

清水模板是建筑施工中常用的一种模板&#xff0c;用于浇筑混凝土结构的形成和支撑。它是指没有进行任何装饰和涂层处理的模板&#xff0c;通常由木材制成&#xff0c;如胶合板、钢模板等。下面是关于清水模板的详细介绍。 清水模板的材质多样&#xff0c;其中最常见的是胶合板。…