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

Соединения с производственной базой данных можно автоматически настроить с помощью пула DataSource. Spring Boot использует следующий алгоритм для выбора конкретной реализации:

  1. Предпочитается HikariCP за его производительность и конкурентность. Если HikariCP доступен, всегда выбирается он.
  2. В противном случае, если доступен DataSource Tomcat для пула, используется он.
  3. Если нет ни HikariCP, ни DataSource пула Tomcat, и если доступен Commons DBCP2, используется он.

Если вы используете «стартеры» spring-boot-starter-jdbc или spring-boot-starter-data-jpa, вы автоматически получаете зависимость от HikariCP.

Вы можете полностью обойти этот алгоритм и указать используемый пул соединений, установив свойство spring.datasource.type. Это особенно важно, если вы запускаете свое приложение в контейнере Tomcat, так как tomcat-jdbc предоставляется по умолчанию.

Дополнительные пулы соединений всегда можно настроить вручную. Если вы определяете свой собственный компонент 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, установив свойство spring.datasource.url. В противном случае Spring Boot пытается автоматически настроить встроенную базу данных.

Часто вам не нужно указывать имя класса драйвера, поскольку Spring Boot может вывести его для большинства баз данных из URL.

Для создания пула DataSource нам необходимо убедиться, что доступен действительный класс Driver, поэтому мы проверяем это перед тем, как что-либо делать. Другими словами, если вы установили spring.datasource.driver-class-name=com.mysql.jdbc.Driver, то этот класс должен быть загружаемым.

Посмотрите DataSourceProperties для большего количества поддерживаемых опций. Это стандартные параметры, которые работают независимо от фактической реализации. Также возможно настроить параметры, специфичные для реализации, используя соответствующий префикс (spring.datasource.hikari.*, spring.datasource.tomcat.* и spring.datasource.dbcp2.*).

Например, если вы используете пул соединений Tomcat, вы можете настроить множество дополнительных параметров, как показано в следующем примере:

# Количество мс, ожидающих перед выдачей исключения, если нет доступного соединения.
spring.datasource.tomcat.max-wait=10000

# Максимальное количество активных соединений, которые могут быть выделены из этого пула одновременно.
spring.datasource.tomcat.max-active=50

# Проверять соединение, прежде чем брать его из пула.
spring.datasource.tomcat.test-on-borrow=true

Подключение к JNDI DataSource

Если вы развертываете приложение Spring Boot на сервере приложений (Application Server), вы можете настроить и управлять своим DataSource с помощью встроенных функций сервера приложений и получить к нему доступ с помощью JNDI.

Свойство spring.datasource.jndi-name можно использовать в качестве альтернативы свойствам spring.datasource.url, spring.datasource.username и spring.datasource.password для доступа к источнику данных из определенного местоположения JNDI. Например, в следующем разделе application.properties показано, как получить доступ к источнику данных, определенному AS JBoss:

spring.datasource.jndi-name=java:jboss/datasources/customers


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки