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不理解的可以在搜索引擎中进行查阅分析。