数据库连接池的意义是什么?
对于数据库连接对象来说,每次创建连接都需要数据库服务端创建专门的资源来应对,如果对于数据库的请求量较少的话,数据库服务端还能撑得住,但是请求量很大时,数据库服务端将会频繁创建关闭数据库连接,频繁创建关闭连接不仅会花费较长的时间,而且还很容易导致数据库服务端停止服务。
所以,在实际的生产中,项目的数据库连接基本都使用连接池的方式。
数据库连接池的工作逻辑是什么?
在项目启动时,先创建数据库连接对象,创建好以后,将该连接对象放到对象池容器中,对象池容器通常是由集合来实现。
此时当程序要连接数据库的时候,就不再直接操作数据库服务端,而是从对象池中取出来一个空闲的数据库连接对象进行操作,操作完之后再将该连接对象交还给对象池容器,这样就不用频繁创建关闭数据库连接。
常用的数据库连接池有哪些?
目前,常用的数据库连接池有dbcp、druid、HikariCP等等。
其中,druid是由阿里巴巴计算平台事业部出品,它是为监控而生的数据库连接池。
今天,就教大家如何在springboot项目中使用druid连接池。
springboot中使用druid连接池
springboot版本:2.3.0;
druid版本:1.1.22;
1 创建springboot项目
如果不会创建springboot项目,请参见我前面的文章:「springboot」开始我的第一个springboot程序
2 引入mybatis框架
在pom.xml文件中添加依赖
org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.2
注意:如果创建springboot项目时已经选择了mybatis,就不用添加上面的依赖
3 引入druid框架
在pom.xml文件中添加依赖
com.alibaba druid-spring-boot-starter 1.1.22
4 新建application-dev.yml并在其中添加druid配置
spring: datasource: druid: username: root password: password url: jdbc:mysql://localhost:3306/springboot?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false driver-class-name: com.mysql.cj.jdbc.Driver # 下面为连接池的补充设置,应用到上面所有数据源中 # 初始化大小,最小,最大 initial-size: 5 min-idle: 5 max-active: 20 # 配置获取连接等待超时的时间 max-wait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 time-between-eviction-runs-millis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false
注意:
1,username、password、url、driver-class-name请换成自己数据库的信息;
2,请保证resource文件夹下有appilcation.yml文件,如果没有请创建,并在其中添加如下配置
spring: profiles: active: dev
5 启动项目验证
可以看到,druid连接池已经成功的引入项目!
后记
本次阐述了数据库连接池的意义并且讲解了在springboot中如何引入druid连接池,需要注意的是,本教程仅仅是在项目中引入了druid连接池,并没有使用druid连接池提供的高级特性比如sql监控等。
高级功能将会在接下来的教程中持续更新,关注我之后将会第一时间看到后续文章!