在上文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配置文件中进行少量配置数据库信息即可.
配置信息如下图:
分别是数据库url地址/用户名/密码,皆根据自身情况设定.
过程分析
首先各种连接池都是实现的DataSource接口,创建对象时,我们采用父类声明/子类创建的方式,这是面向接口的思想,可以更加有效的解耦,也更加方便以后的修改或是维护.
HiKariCP连接池创建连接时,第一次创建时,花费时间会较长,再次获取连接会相对时间短很多,是由于第一次创建时,需要先创建池,再去创建连接存放在池中或直接使用,所以时间会较长.
并且当只是创建一个连接时,通过断点跟踪,可以看到就只是创建了一次;而当我们需要创建两个及以上的连接时,通过断电追踪,也可以发现,都会在需要的基础上再多创建一个,这是由于底层会多创建一个备用的机制,以防如果出现问题,或是再有需求时使用.
另外,当连接都在使用时,同一时间是不会有相同的连接给分别的对象使用的,这是基于连接池底层的双重校验机制;其优势就是在保证线程安全的同时还会考虑其性能;只有当连接使用完后放回至连接池中,再有对象使用时,才有可能使用到重复的连接池.
最后,当框架使用连接池时,其实也是由DirverManage来创建,只是之后会交给池来管理,底层都是一样的.