在上文Spring Boot 初步学习01(点击查看)中,我们已经将STS开发工具整合Maven创建了项目,进行了测试,这篇文章我们一起继续整合一下连接池.

连接池选择

市面上对于数据库连接池有很多选择,如:C3P0,Druid,HikariCP等.
注意:数据库连接池都需要实现数据库连接池公共接口:javax.sql.DataSource

本文中选择HikariCP连接池号称是目前最快的连接池,而且目前在springboot工程默认推荐使用HiKariCP连接池.

整合HiKariCP连接池

创建项目

创建一个Spring Starter Project项目

添加依赖

右键项目中的pom.xml文件 --> spring --> Edit Starters --> 搜索jdbc --> 勾选MySQL Driver/JDBC API两个依赖 --> 保存会自动下载依赖

注意:
看似我们并没有选择上文说好的HiKariCP连接池,这是因为在pom.xml中jdbc依赖会默认帮我们下载HiKariCP连接池.

配置连接池

SpringBoot中提倡的就是零配置,少配置.
只需要在application.properties配置文件中进行少量配置数据库信息即可.

配置信息如下图:
1596199204(1).png
分别是数据库url地址/用户名/密码,皆根据自身情况设定.

过程分析

首先各种连接池都是实现的DataSource接口,创建对象时,我们采用父类声明/子类创建的方式,这是面向接口的思想,可以更加有效的解耦,也更加方便以后的修改或是维护.

HiKariCP连接池创建连接时,第一次创建时,花费时间会较长,再次获取连接会相对时间短很多,是由于第一次创建时,需要先创建池,再去创建连接存放在池中或直接使用,所以时间会较长.

并且当只是创建一个连接时,通过断点跟踪,可以看到就只是创建了一次;而当我们需要创建两个及以上的连接时,通过断电追踪,也可以发现,都会在需要的基础上再多创建一个,这是由于底层会多创建一个备用的机制,以防如果出现问题,或是再有需求时使用.

另外,当连接都在使用时,同一时间是不会有相同的连接给分别的对象使用的,这是基于连接池底层的双重校验机制;其优势就是在保证线程安全的同时还会考虑其性能;只有当连接使用完后放回至连接池中,再有对象使用时,才有可能使用到重复的连接池.

最后,当框架使用连接池时,连接其实也是由Dirver来创建,只是之后会交给池来管理,底层都是一样的.


迈克丝
82 声望5 粉丝

一步一步学技术,踏踏实实涨经验,兴趣广泛,广交好友,希望大家多多指正/批评.