1

Согласно this documentation:Spring-boot + JDBC + HSQLDB: Как проверить, использует ли Spring Boot пул подключений?

29.1.1 Embedded Database Поддержка

Spring загрузки может автоматически настроить встроенные базы данных H2, HSQL и Дерби. Вам не нужно указывать какие-либо URL-адреса соединений, просто включите зависимость сборки во встроенную базу данных, которую вы хотите использовать.

и

29.1.2 Подключение к производственной базе данных

соединения с базой данных производства также может быть автоматически сконфигурирован с использованием пулы DataSource.

Конфигурация 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 

[Подсказка] Вы часто не нужно будет указать-имя-класса водителя с весны ботинка может вывести это для большинства баз данных из URL.

[Примечание] Для пула Созданный источник данных, мы должны быть в состоянии убедиться, что действительный класс доступен, поэтому мы проверяем его, прежде чем что-либо делать. I.e. если вы установили 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 

поскачет загрузки автоматической настройки пула Datasource, так как я указал spring.datasource.driver -класс-?
Или это просто создаст источник данных для встроенного драйвера базы данных без объединения пулов?
Как подтвердить, что Spring Boot использует пул соединений?

ответ

1

Я понимаю, что до тех пор, пока поддерживается класс данных datasource в 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

+0

спасибо, за ваш ответ. – Paul

4

Спасибо за ваш ответ Дэйв. Я только начинаю изучать Spring framework, поэтому я возился с ним. Это то, что я сделал в MyApplication.main метод, чтобы подтвердить, если Spring Загрузочный использует пул соединений:

ApplicationContext context = SpringApplication.run(MyApplication.class); 
DataSource dataSource = context.getBean(javax.sql.DataSource.class); 
System.out.println("DATASOURCE = " + dataSource); 

И я получил следующий вывод:

DATASOURCE = [email protected]{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=org.hsqldb.jdbcDriver; maxActive=100; maxIdle=100; minIdle=10; initialSize=10; maxWait=30000; testOnBorrow=false; testOnReturn=false; timeBetweenEvictionRunsMillis=5000; numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=false; testOnConnect=false; password=********; url=jdbc:hsqldb:mem:testdb; username=sa; validationQuery=null; validationQueryTimeout=-1; validatorClassName=null; validationInterval=30000; accessToUnderlyingConnectionAllowed=true; removeAbandoned=false; removeAbandonedTimeout=60; logAbandoned=false; connectionProperties=null; initSQL=null; jdbcInterceptors=null; jmxEnabled=true; fairQueue=true; useEquals=true; abandonWhenPercentageFull=0; maxAge=0; useLock=false; dataSource=null; dataSourceJNDI=null; suspectTimeout=0; alternateUsernameAllowed=false; commitOnReturn=false; rollbackOnReturn=false; useDisposableConnectionFacade=true; logValidationErrors=false; propagateInterruptState=false; ignoreExceptionOnPreLoad=false; } 

Я также пробовал различные конфигурации с файлом application.properties и моим файлом build.grade, чтобы подтвердить, будет ли Spring Boot использовать пул соединений, когда он автоматически настраивает DataSou rce, и я узнал, что автоконфигурация Spring Boot всегда создает пул DataSource.