欢迎访问www.allbetgaming.com!

首页科技正文

allbet gmaing:在 Spring Boot 中使用 HikariCP 连接池

admin2020-06-289

上次帮小王解决了如何在 Spring Boot 中使用 JDBC 毗邻 MySQL 后,我就一直在等,等他问我第三个问题,比如说如何在 Spring Boot 中使用 HikariCP 毗邻池。但我等了四天也没有等到任何音讯,似乎他从我的天下里消逝了,而我却仍然陶醉在他拍我马屁的美妙感受里。

突然感受,没有小王的日子里,好空虚。怎么办呢?想来想去照样写文章过活吧,努力创作的过程中,也许能够脱节对小王的苦苦忖量。写什么好呢?

想来想去,就写如何在 Spring Boot 中使用 HikariCP 毗邻池吧。究竟实战项目当中,一定不能使用 JDBC,毗邻池是必须的。而 HikariCP 听说异常的快,快到 Spring Boot 2 默认的数据库毗邻池也从 Tomcat 切换到了 HikariCP(喜新厌旧的臭偏差能不能改改)。

HikariCP 的 GitHub 地址如下:

https://github.com/brettwooldridge/HikariCP

现在星标 12K,被使用次数更是达到了 43.1K。再来看看它的自我介绍。

牛逼的不能行啊,原来 Hikari 来源于日语,“光”的意思,这意味着快得像光速一样吗?讲真,看简介的感受就好像在和我的女神“汤唯”握手一样刺激和震撼。

既然 Spring Boot 2 已经默认使用了 HikariCP,那么使用起来也相当的轻松惬意,只需要简朴几个步骤。

01、初始化 MySQL 数据库

既然要毗邻 MySQL,那么就需要先在电脑上安装 MySQL 服务(本文暂且跳过),而且确立数据库和表。

CREATE DATABASE `springbootdemo`;
DROP TABLE IF EXISTS `mysql_datasource`;
CREATE TABLE `mysql_datasource` (
  `id` varchar(64NOT NULL,
  PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

02、使用 Spring Initlallzr 确立 Spring Boot 项目

确立一个 Spring Boot 项目异常简朴,通过 Spring Initlallzr(https://start.spring.io/)就可以了。

勾选 Web、JDBC、MySQL Driver 等三个依赖。

1)Web 解释该项目是一个 Web 项目,便于我们直接通过 URL 来实操。

3)MySQL Driver:毗邻 MySQL 服务器的驱动器。

5)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 的依赖信息。

allbet gmaing:在 Spring Boot 中使用 HikariCP 连接池 第1张

选项选择完后,就可以点击【Generate】按钮天生一个初始化的 Spring Boot 项目了。天生的是一个压缩包,导入到 IDE 的时刻需要先解压。

03、编辑 application.properties 文件

项目导入乐成后,守候 Maven 下载依赖,完成后编辑 application.properties 文件,设置 MySQL 数据源信息。

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

是不是有一种似曾相识的感受(和[上一篇]()中的数据源设置一模一样)?为什么呢?谜底已经告诉过人人了——默认、默认、默认,主要的事情说三遍,Spring Boot 2 默认使用了 HikariCP 毗邻池。

04、编辑 Spring Boot 项目

为了便于我们查看 HikariCP 的毗邻信息,我们对 SpringBootMysqlApplication 类举行编辑,增添以下内容。

@SpringBootApplication
public class HikariCpDemoApplication implements CommandLineRunner {
    @Autowired
    private DataSource dataSource;

    public static void main(String[] args) {
        SpringApplication.run(HikariCpDemoApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        Connection conn = dataSource.getConnection();
        conn.close();
    }
}

HikariCpDemoApplication 实现了 CommandLineRunner 接口,该接口允许我们在项目启动的时刻加载一些数据或者做一些事情,比如说我们实验通过 DataSource 工具与数据源确立毗邻,这样就可以在日志信息中看到 HikariCP 的毗邻信息。CommandLineRunner 接口有一个方式需要实现,就是我们看到的 run() 方式。

allbet gmaing:在 Spring Boot 中使用 HikariCP 连接池 第2张

通过 debug 的方式,我们可以看到,在项目运行的过程中,dataSource 这个 Bean 的类型为 HikariDataSource。

05、运行 Spring Boot 项目

接下来,我们直接运行 HikariCpDemoApplication 类,这样一个 Spring Boot 项目就启动乐成了。

allbet gmaing:在 Spring Boot 中使用 HikariCP 连接池 第3张

HikariDataSource 工具的毗邻信息会被打印出来。也就是说,HikariCP 毗邻池的设置启用了。快给自己点个赞。

allbet gmaing:在 Spring Boot 中使用 HikariCP 连接池 第4张

06、为什么 Spring Boot 2.0 选择 HikariCP 作为默认数据库毗邻池

有几种基准测试效果可用来对照HikariCP和其他毗邻池框架(例如c3p0dbcp2tomcatvibur)的性能。例如,HikariCP团队公布了以下基准(可在此处获得原始效果):

HikariCP 团队为了证实自己性能最佳,特意找了几个靠山对比了下。不幸充当靠山的有 c3p0、dbcp2、tomcat 等传统的毗邻池。

allbet gmaing:在 Spring Boot 中使用 HikariCP 连接池 第5张

从上图中,我们能感受出靠山的尴尬,HikariCP 佼佼不群了。HikariCP 制作以云云优异,缘故原由大致有下面这些:

1)字节码级别上的优化:要求编译后的字节码最少,这样 CPU 缓存就可以加载更多的程序代码。

HikariCP 优化前的代码片断:

public final PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException
{
    return PROXY_FACTORY.getProxyPreparedStatement(this, delegate.prepareStatement(sql, columnNames));
}

HikariCP 优化后的代码片断:

public final PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException
{
    return ProxyFactory.getProxyPreparedStatement(this, delegate.prepareStatement(sql, columnNames));
}

以上两段代码的差异只有一处,就是 ProxyFactory 替换了 PROXY_FACTORY,这个改动后的字节码比优化前减少了 3 行指令。详细的剖析参照 HikariCP 的 Wiki 文档。

2)使用自定义的列表(FastStatementList)取代 ArrayList,可以制止 get() 的时刻举行局限检查,remove() 的时刻从头至尾的扫描。

allbet gmaing:在 Spring Boot 中使用 HikariCP 连接池 第6张

07、鸣谢

好了,列位读者朋友们,准许小王的文章终于写完了。能看到这里的都是最优异的程序员,升职加薪就是你了。若是以为不过瘾,还想看到更多,可以 star 二哥的 GitHub【itwanger.github.io】,本文已收录。

PS:本文配套的源码已上传至 GitHub 【SpringBootDemo.SpringBootMysql】。

原创不易,若是以为有点用的话,请不要小气你手中点赞的权力;若是想要第一时间看到二哥更新的文章,请扫描下方的二维码,关注缄默王二民众号。我们下篇文章见!

allbet gmaing:在 Spring Boot 中使用 HikariCP 连接池 第7张,

欧博开户网址

欢迎进入欧博开户网址(Allbet Gaming):www.aLLbetgame.us,欧博网址开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。

网友评论