Использует ли JDBCTemplate пул соединений по умолчанию? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть микросервис Spring Boot, который подключается к нескольким базам данных через соединение JDBC с использованием JDBCTemplate:

@Bean(name = "mysqlJdbcTemplate")
    public JdbcTemplate jdbcTemplate(@Qualifier("mysqlDb") DataSource dsMySQL) {
        return new JdbcTemplate(dsMySQL);
    }

У меня есть разные шаблоны для каждой базы данных, а затем отдыхает контроллер шаблона, который выбирает правильный шаблон для использованияв зависимости от параметров, переданных в запросе.Я прочитал документацию, но она не ясна:

  • Используется ли пул соединений из коробки или мне нужно указать его через конфигурацию?
  • В этом случае пул соединенийиспользуется для каждого JDBCTemplate?

1 Ответ

0 голосов
/ 09 октября 2018

Spring Boot попытается загрузить доступные пул соединений для вашего источника данных:

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

Мыпредпочитаю HikariCP за его производительность и параллелизм.Если HikariCP доступен, мы всегда выбираем его.

В противном случае, если доступен источник данных пула Tomcat, мы его используем.

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

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

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

Пример определения вашего собственного компонента:

@Bean
public DataSource dataSource() throws PropertyVetoException {
    return MyDataSourceHolder.getDataSource();
}
...