一尘不染

Spring-boot + JDBC + HSQLDB:如何验证Spring Boot是否正在使用连接池?

spring-boot

根据此文档

29.1.1嵌入式数据库支持

Spring Boot可以自动配置嵌入式H2,HSQL和Derby数据库。您无需提供任何连接URL,只需包含要使用的嵌入式数据库的构建依赖项即可。

29.1.2连接到生产数据库

生产数据库连接也可以使用池数据源自动配置。

DataSource配置由spring.datasource。*中的外部配置属性控制。例如,您可以在application.properties中声明以下部分:

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

[提示]您通常不需要指定驱动程序类名称,因为Spring boot可以从url推断出大多数数据库。

[注意]为了创建池化的数据源,我们需要能够验证有效的Driver类是否可用,因此我们在进行任何操作之前都要进行检查。即,如果您设置
spring.datasource.driver-class-name = com.mysql.jdbc.Driver, 则该类必须是可加载的。

如果将以下内容放入 application.properties 文件,该怎么办:

spring.datasource.url=jdbc:hsqldb:file:db/organization-db
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver

自从我指定了 spring.datasource.driver-class-name 以来,Spring Boot会自动配置池数据源吗?
还是只为嵌入式数据库驱动程序创建一个数据源而没有连接池?
如何确认Spring Boot是否正在使用连接池?


阅读 473

收藏
2020-05-30

共1个答案

一尘不染

我的理解是,只要在classpath上有受支持的数据源类,spring-boot就会使用它,并且如果没有指定,则以tomcat作为首选项。

DataSourceBuilder中给出了受支持的数据源的列表,当前的列表是tomcat,hikari,dbcp和dbcp2。

您可以通过javax.sql.Datasource从应用程序上下文中查找实现来验证是否已创建一个,尽管我不知道为什么不这样做。

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-
autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceBuilder.java

2020-05-30