Как настроить и контролировать HikariCP с помощью Hibernate и Spring Boot

У меня есть простой проект Spring Boot с Hibernate, я хочу знать, правильны ли мой класс конфигурации HikariCP и application.properties, и как я могу проверить и контролировать пулы соединений?

Мой класс конфигурации:

@Configuration
class HikariCPConfig {

   @Value("${spring.datasource.username}")
   private String user;

   @Value("${spring.datasource.password}")
   private String password;

   @Value("${spring.datasource.url}")
   private String dataSourceUrl;

   @Value("${spring.datasource.dataSourceClassName}")
   private String dataSourceClassName;

   @Value("${spring.datasource.poolName}")
   private String poolName;

   @Value("${spring.datasource.connectionTimeout}")
   private int connectionTimeout;

   @Value("${spring.datasource.maxLifetime}")
   private int maxLifetime;

   @Value("${spring.datasource.maximumPoolSize}")
   private int maximumPoolSize;

   @Value("${spring.datasource.minimumIdle}")
   private int minimumIdle;

   @Value("${spring.datasource.idleTimeout}")
   private int idleTimeout;

   @Bean
   public HikariDataSource primaryDataSource() {
       Properties dsProps = new Properties();
       dsProps.put("url", dataSourceUrl);
       dsProps.put("user", user);
       dsProps.put("password", password);
       dsProps.put("prepStmtCacheSize",250);
       dsProps.put("prepStmtCacheSqlLimit",2048);
       dsProps.put("cachePrepStmts",Boolean.TRUE);
       dsProps.put("useServerPrepStmts",Boolean.TRUE);

       Properties configProps = new Properties();
          configProps.put("dataSourceClassName", dataSourceClassName);
          configProps.put("poolName",poolName);
          configProps.put("maximumPoolSize",maximumPoolSize);
          configProps.put("minimumIdle",minimumIdle);
          configProps.put("minimumIdle",minimumIdle);
          configProps.put("connectionTimeout", connectionTimeout);
          configProps.put("idleTimeout", idleTimeout);
          configProps.put("dataSourceProperties", dsProps);

      HikariConfig hc = new HikariConfig(configProps);
      HikariDataSource ds = new HikariDataSource(hc);
      return ds;
   }
}

файл application.properties:

server.port= 8888
spring.jpa.databasePlatform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update

spring.datasource.dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/db_test
spring.datasource.username=root
spring.datasource.password=
spring.datasource.poolName=SpringBootHikariCP
spring.datasource.maximumPoolSize=5
spring.datasource.minimumIdle=3
spring.datasource.maxLifetime=2000000
spring.datasource.connectionTimeout=30000
spring.datasource.idleTimeout=30000
spring.datasource.pool-prepared-statements=true
spring.datasource.max-open-prepared-statements=250

Только с этим конфигурационным классом и файлом свойств, HikariCP точно работает? потому что я могу подключиться к базе данных, даже если я прокомментирую весь класс конфигурации, поэтому я точно не знаю.


person dwix    schedule 11.02.2016    source источник


Ответы (1)


Хикари автоматически настроен, поэтому он работает при удалении пользовательского класса конфигурации. Просто бросьте HikariCPConfig.

Я думаю, это не случайно, что вы используете пространство имен spring.datasource. Почему бы вам не попробовать настроить существующую функцию, а не создавать класс конфигурации самостоятельно?

Вы можете проверить правильность настройки Hikari, просмотрев ссылку auto-configuration отчет

person Stephane Nicoll    schedule 11.02.2016
comment
Спасибо за помощь. - person dwix; 11.02.2016