버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

HikariCP는 가장 대중적으로 많이 사용하는 고성능 JDBC Connection Pool입니다. 이것을 사용하기 위해서는 위해서는 src/main/resources/application.yml 파일에 다음과 같이 설정값들을 설정값들을 사용할 수 있습니다.

코드 블럭
languageyml
linenumberstrue
spring:
  application:
    name: HelloWorld

  ###################
  ## JDBC
  ###################

  datasource:
    hikari:
      jdbc-url: jdbc:postgresql://localhost:5432/test
      username: postgres
      password: postgres
      driver-class-name: org.postgresql.Driver
      connection-test-query: SELECT 1
      maximum-pool-size: 10
      minimum-idle: 3
    sql-script-encoding: UTF-8
    continue-on-error: true
    initialization-mode: always

HikariCP 설정에서 JDBC를 설정하지 않고 공용 속성으로 설정하고 필요한 설정만 HikariCP 설정으로 지정할 수도 있습니다.

코드 블럭
languageyml
linenumberstrue
spring:
  application:
    name: HelloWorld

  #################
  ## DataSource
  #################

  datasource:
    url: jdbc:postgresql://localhost:5432/test
    driver-class-name: org.postgresql.Driver
    username: postgres
    password: postgres
    sql-script-encoding: UTF-8
    continue-on-error: true
    initialization-mode: always
    hikari:
      connection-test-query: SELECT 1
      maximum-pool-size: 10
      max-lifetime: 1800000
      minimum-idle: 10
      idle-timeout: 600000

org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration  설정에 다음과 같이 HikariCP를 자동 초기화 하는 코드가 포함되어 있습니다.

코드 블럭
languagejava
linenumberstrue
import java.sql.SQLException;

import javax.sql.DataSource;

import com.zaxxer.hikari.HikariDataSource;
import oracle.jdbc.OracleConnection;
import oracle.ucp.jdbc.PoolDataSourceImpl;

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DatabaseDriver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;

abstract class DataSourceConfiguration {

	@SuppressWarnings("unchecked")
	protected static <T> T createDataSource(DataSourceProperties properties, Class<? extends DataSource> type) {
		return (T) properties.initializeDataSourceBuilder().type(type).build();
	}

	/**
	 * Hikari DataSource configuration.
	 */
	@Configuration(proxyBeanMethods = false)
	@ConditionalOnClass(HikariDataSource.class)
	@ConditionalOnMissingBean(DataSource.class)
	@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.zaxxer.hikari.HikariDataSource",
			matchIfMissing = true)
	static class Hikari {

		@Bean
		@ConfigurationProperties(prefix = "spring.datasource.hikari")
		HikariDataSource dataSource(DataSourceProperties properties) {
			HikariDataSource dataSource = createDataSource(properties, HikariDataSource.class);
			if (StringUtils.hasText(properties.getName())) {
				dataSource.setPoolName(properties.getName());
			}
			return dataSource;
		}

	}

	/**
	 * Generic DataSource configuration.
	 */
	@Configuration(proxyBeanMethods = false)
	@ConditionalOnMissingBean(DataSource.class)
	@ConditionalOnProperty(name = "spring.datasource.type")
	static class Generic {

		@Bean
		DataSource dataSource(DataSourceProperties properties) {
			return properties.initializeDataSourceBuilder().build();
		}

	}

}

Spring Boot JDBC Starter 추가하기

...