java总结:SpringBoot 整合连接池

    技术2022-07-11  68

    java总结:SpringBoot 整合连接池

    1.何为规范的实现,何为标准的实现

    a)java.sql.DataSource为标准,HikariDataSource为标准的实现

    b)java.sql.Driver为标准,com.mysql.jdbc.Driver为标准的实现

    2.SpringBoot项目中hikariCp连接池配置方式

    a)初始化MySQL数据库

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

    mysql -uroot -proot

    第二步:设置控制台编码方式

    set names utf8;

    第三步:执行goods.sql文件

    source d:/goods.sql;

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

    b)使用Spring Initlallzr创建Spring Boot项目 添加依赖:Spring WEB, JDBC API,MySQL Driver

    Web: 表明该项目是一个 Web 项目,便于我们直接通过 URL 来实操。

    MySQL Driver:连接 MySQL 服务器的驱动器。

    JDBC:Spring Boot 2 默认使用了 HikariCP,所以 HikariCP 会默认在 spring-boot-starter-jdbc 中附加依赖,因此不需要主动添加 HikariCP 的依赖。

    PS:怎么证明这一点呢?项目导入成功后,在 pom.xml 文件中,按住鼠标左键 + Ctrl 键访问 spring-boot-starter-jdbc 依赖节点,可在 spring-boot-starter-jdbc.pom 文件中查看到 HikariCP 的依赖信息。 c)编辑application.properties文件 项目导入成功后,等待 Maven 下载依赖,完成后编辑 application.properties 文件,配置 MySQL 数据源信息。

    #spring datasource spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT+8&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root

    d)单元测试类(测试包中编写)

    @SpringBootTest public class DataSourceTests { @Autowired private DataSource dataSource; @Test public void testConnection() throws Exception{ System.out.println(dataSource.getConnection()); } }

    e)原理 再上图演示了我们在测试类DataSourceTests中基于DataSource获取连接的一个基本过程。对于上图的连接建立过程,可以在Driver接口的实现中的connect方法上添加断点,然后进行断点测试,如下图显示了API方法的调用执行过程(按箭头方向开代码),这个了解了解即可。 当我们需要了解,基于HikariCP连接池获取数据库连接,并将获取到的连接放入到连接池中的过程进行了解,可以参考下图中的断点设计进行查看即可(不做具体要求)。 在基于上图中设置的断点序号位置进行单元测试时,可以每次按F8进行断点跟踪,了解HiKariCP连接池获取连接存储连接的过程,其中API不理解的可以在搜索引擎中进行查阅分析。

    3.池化思想的目的(优势,劣势)

    优势:

    1.资源复用: 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统 消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。

    2.更快的系统响应速度:   数据库连接池在初始化过程中,往往已经创建了若干数据库连接至于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间,从而缩减了系统整体响应时间。

    3.新的资源分配手段 :   对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术,几年钱也许还是个新鲜话题,对于目前的业务系统而言,如果设计中还没有考虑到连接池的应用。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。

    4.统一的连接管理,避免数据库连接泄露: 在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄漏。

    劣势: 数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)

    Processed: 0.009, SQL: 9