Spring Boot整合连接池(PROJECT01_DAY02_02)

请添加图片描述

1. Spring Boot 整合连接池

1.1 概述

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

图-1
Java 为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。然后我们的应用程序中耦合与这个接口,便可以方便的切换不同厂商的连接池,常见的连接池有 DBCP、C3P0、DRUID、HikariCP 等。 通过连接池获取连接的一个基本过程,如图-2 所示:
在这里插入图片描述

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

1.2 数据初始化

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

  • 第一步:登录 mysql
mysql –uroot –proot 
  • 第二步:设置控制台编码方式
set names utf8; 
  • 第三步:执行 goods.sql 文件
source d:/goods.sql 

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

1.3 整合 HikariCP 连接池

HiKariCP 号称是目前世界上最快的连接池,有江湖一哥的称号,目前在 Spring Boot 工程默认推荐使用 HiKariCP 连接池,现在我们创建一个新的项目,项目名 CGB-SBOOT-02, 在此工程中整合 HiKariCP,其步骤如下:
在这里插入图片描述

  • 第一步:添加依赖。

编辑项目中 pom.xml,右键项目的 pom.xml 文件,选择 Spring,如图-3 所示:
在这里插入图片描述

图-3
查找 MySQL 驱动依赖,JDBC API 依赖,如图-4 所示:
在这里插入图片描述

图-4
依赖添加以后,在 pom.xml 文件中会自动添加如下两个依赖配置,分别添加测试,查看 jar 包下载情况:

  1. MySQL 数据库驱动依赖。
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
</dependency>
  1. Spring 对象 JDBC 支持(此时会默认帮我们下载 HiKariCP 连接池)。
<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
  • 第二步:配置连接池

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

spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
  • 第三步:单元测试(测试包中编写)
@SpringBootTest
public class DataSourceTests {
    @Autowired
    private DataSource dataSource;
    @Test
    public void testConnection() throws Exception{
    	Connection conn = dataSource.getConnection();
        System.out.println(conn); 
    }
}
  • 第四步:原理分析,如图-5 所示:
    在这里插入图片描述

图-5
在图-5 中,演示了我们在测试类 DataSourceTests 中基于 DataSource 获取连接的一个基本过程。

(了解)对于图-5 中的连接建立过程,可以在 Driver 接口的实现中的 connect 方法上添加断点,然后进行断点测试,如图-6显示了 API 方法的调用执行过程(按箭头方向看代码),这个了解了解即可。
在这里插入图片描述

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

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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值