SpringBoot 基础(basic)

本文介绍了Spring Boot如何整合HikariCP连接池,包括HikariCP的背景、创建SpringBoot项目、添加依赖、配置连接池、编写单元测试获取连接以及连接池的工作原理分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Spring Boot整合连接池

1.1 SpringBoot概述

实际开发中应用程序与数据库交互时,“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术来重用连接Connection对象,如图-1所示:

Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。然后我们的应用程序中耦合与这个接口,便可以方便的切换不同厂商的连接池,常见的连接池有DBCP、C3P0,DRUID,HikariCP等。

通过连接池获取连接的一个基本过程,如图-2所示:

在图-2中,执行原理如下所示

用户通过DataSource对象的getConnection()方法,获取一个连接。假如池中有连接,则直接将连接返回给用户。假如池中没有连接,则会调用Dirver(驱动,由数据库厂商进行实现)对象的connect方法从数据库获取,拿到连接以后,可以将连接在池中放一份,然后将连接返回给调用方。

1.2 数据初始化

打开mysql控制台,然后按如下步骤执行goods.sql文件:

第一步:登录mysql

mysql –uroot –proot

第二步:设置控制台编码(MySql客户端(client))方式

set names utf8; --通知服务器客户端所使用的编码为utf8

第三步:执行goods.sql文件

source d:/goods.sql   -- 注意source 后面跟的是goods.sql文件的位置,不要直接将sql文件的内容之间拿到命令行或图形化界面工具中直接运行,若sql文件中有中文,就会出现乱码!在实际开发拿到sql文件也不要立刻去执行,否则会造成不可估量的损失!

备注:当mysql连接数据库失败时,检测服务是否启动,可尝试先启动服务(windows中需要以管理员打开控制台,然后在控制台执行net start mysql启动服务即可,停止mysql服务器执行是 net stop mysql)

1.3 整合HikariCP连接池

HikariCP连接池背景介绍

HiKariCP号称是目前世界上最快的连接池,有江湖一哥的称号,目前在springboot工程默认推荐使用HiKariCP连接池。

现在我们创建一个新的SpringBoot项目,项目名为CGB-SBOOT-04,在此工程中整合HiKariCP,其步骤如下:

step1:创建SpringBoot项目。

step2,添加依赖(两个--MySQL驱动,Spring-JDBC)

编辑项目中pom.xml,右键项目的pom.xml文件,选择spring,如图-3所示:

 

然后查找mysql 驱动依赖,JDBC API依赖,如图-4所示:

依赖添加以后,在pom.xml文件中会自动添加如下两个依赖配置:

mysql数据库驱动依赖。

spring对象jdbc支持(此时会默认帮我们下载HiKariCP连接池)。

step3,配置连接池(配置连接数据库的url,username,password)

打开application.properties配置文件,添加如下内容。

 

step4:编写单元测试类DataSourceTests从池中获取连接(Connection)(测试包中编写,测试类必须放在启动类所在包或其子包中!)

step5:原理分析,如图-5所示

图-5中,演示了我们在测试类DataSourceTests中基于DataSource获取连接的一个基本过程。对于图-5中的连接建立过程,可以在Driver接口的实现中的connect方法上添加断点,然后进行断点测试,如图-6显示了API方法的调用执行过程(按箭头方向开代码),这个了解了解即可

当我们需要了解,基于HikariCP连接池获取数据库连接,并将获取到的连接放入到连接池中的过程进行了解,可以参考图-7中的断点设计进行查看即可(不做具体要求)。

在基于图-7中设置的断点序号位置进行单元测试时,可以每次按F8进行断点跟踪,了解HiKariCP连接池获取连接存储连接的过程,其中API不理解的可以在搜索引擎中进行查阅分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值