欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?Boot?快速使用?HikariCP?連接池配置詳解

 更新時間:2023年06月05日 14:48:32   作者:愛路寶7A  
Spring Boot 2.x 將其作為默認(rèn)的連接池組件,項(xiàng)目中添加 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 模塊后,HikariCP 依賴會被自動引入,這篇文章主要介紹了Spring?Boot使用HikariCP連接池配置詳解,需要的朋友可以參考下

Spring Boot 使用 HikariCP 連接池配置詳解

HikariCP 是一個高性能的 JDBC 連接池組件。

Spring Boot 2.x 將其作為默認(rèn)的連接池組件,項(xiàng)目中添加 spring-boot-starter-jdbcspring-boot-starter-data-jpa 模塊后,HikariCP 依賴會被自動引入。

快速使用

1)在你的 Spring Boot 項(xiàng)目中添加依賴配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

注意:以下常用的 ORM 組件中已經(jīng)包含了 JDBC 依賴,不需要重復(fù)引入:

  • spring-boot-starter-data-jpa
  • mybatis-spring-boot-starter
  • mybatis-plus-boot-starter

2)添加數(shù)據(jù)源配置:

## Spring HikaraDataSource Configuration
# spring.datasource.type=com.zaxxer.hikari.HikariDataSource
# spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# spring.datasource.name=HikariCP-1
spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.maximum-pool-size=100
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.pool-name=HikaraPool-1

連接池配置詳解

1)在 Spring Boot 項(xiàng)目中,一個簡單的 Spring DataSource 配置,通常只需要設(shè)置數(shù)據(jù)庫連接、用戶名和密碼三個參數(shù)。

## Spring DataSourceProperties
# 設(shè)置連接池類型,默認(rèn)自動獲取(可選)
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
# 設(shè)置數(shù)據(jù)庫驅(qū)動,默認(rèn)自動獲?。蛇x)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 生成唯一的數(shù)據(jù)源名稱,設(shè)置與否,都會優(yōu)先取 name 的值(可選)
spring.datasource.generate-unique-name=true
# 設(shè)置數(shù)據(jù)源名稱,默認(rèn)會生成唯一的數(shù)據(jù)源名稱,如:HikariPool-1(可選)
spring.datasource.name=HikariCP-1
# 設(shè)置數(shù)據(jù)庫連接(必選)
spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
# 設(shè)置數(shù)據(jù)庫用戶名(必選)
spring.datasource.username=root
# 設(shè)置數(shù)據(jù)庫密碼(必選)
spring.datasource.password=123456

2)在 Spring Boot 項(xiàng)目中, Spring DataSource 會使用默認(rèn)的配置啟用 HikaraCP 數(shù)據(jù)庫連接池。我們也可以通過屬性文件來優(yōu)化 HikariCP 的配置項(xiàng),尤其是連接池大小的設(shè)置。

## Spring HikariConfig
# 事務(wù)自動提交 - 默認(rèn)值:true
spring.datasource.hikari.auto-commit=true
# 連接測試查詢 - Using the JDBC4 <code>Connection.isValid()</code> method to test connection validity can be more efficient on some databases and is recommended.
# 如果你的驅(qū)動程序支持JDBC4,強(qiáng)烈建議不要設(shè)置此屬性。
spring.datasource.hikari.connection-test-query=select 1
# 連接超時時間 - 默認(rèn)值:30秒。
spring.datasource.hikari.connection-timeout=30000
# 連接池中允許閑置的最長時間 - 默認(rèn)值:10分鐘
spring.datasource.hikari.idle-timeout=600000
# 一個連接生命時長(毫秒),超時而沒被使用則被釋放 - 默認(rèn)值:30分鐘
spring.datasource.hikari.max-lifetime=1800000
# 連接池中允許的最大連接數(shù),包括閑置和使用中的連接 - 默認(rèn)值:10
spring.datasource.hikari.maximum-pool-size=100
# 連接池中允許的最小空閑連接數(shù) - 默認(rèn)值:10。
spring.datasource.hikari.minimum-idle=10
# 連接被測試活動的最長時間 - 默認(rèn)值:5秒。
spring.datasource.hikari.validation-timeout=5000
# 指定連接池的名稱 - 默認(rèn)自動生成
spring.datasource.hikari.pool-name=HikaraPool-1

多數(shù)據(jù)源配置

1)添加多數(shù)據(jù)源配置:

## Spring HikaraDataSource Configuration
# spring.datasource.one.driver-class-name=com.mysql.cj.jdbc.Driver
# spring.datasource.one.name=HikariCP-1
spring.datasource.one.url=jdbc:mysql://localhost:3306/kaddo-sit?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
spring.datasource.one.username=root
spring.datasource.one.password=123456
spring.datasource.one.hikari.connection-timeout=30000
spring.datasource.one.hikari.idle-timeout=600000
spring.datasource.one.hikari.max-lifetime=1800000
spring.datasource.one.hikari.maximum-pool-size=100
spring.datasource.one.hikari.minimum-idle=10
spring.datasource.one.hikari.pool-name=HikaraPool-1
## Spring HikaraDataSource Configuration
# spring.datasource.two.driver-class-name=com.mysql.cj.jdbc.Driver
# spring.datasource.two.name=HikariCP-2
spring.datasource.two.url=jdbc:mysql://localhost:3306/kaddo-uat?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
spring.datasource.two.username=root
spring.datasource.two.password=123456
spring.datasource.two.hikari.connection-timeout=30000
spring.datasource.two.hikari.idle-timeout=600000
spring.datasource.two.hikari.max-lifetime=1800000
spring.datasource.two.hikari.maximum-pool-size=100
spring.datasource.two.hikari.minimum-idle=10
spring.datasource.two.hikari.pool-name=HikaraPool-2

2)創(chuàng)建多數(shù)據(jù)源:

@Bean
@Primary
@ConfigurationProperties("spring.datasource.one")
public DataSourceProperties dataSourcePropertiesOne() {
	return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("spring.datasource.one.hikari")
public HikariDataSource dataSourceOne(DataSourceProperties properties) {
	return createHikariDataSource(properties);
}
@Bean
@ConfigurationProperties("spring.datasource.two")
public DataSourceProperties dataSourcePropertiesTwo() {
	return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("spring.datasource.two.hikari")
public HikariDataSource dataSourceTwo(@Qualifier("dataSourcePropertiesTwo") DataSourceProperties properties) {
	return createHikariDataSource(properties);
}
  @SuppressWarnings("unchecked")
  private static <T> T createHikariDataSource(DataSourceProperties properties, Class<? extends DataSource> type) {
    return (T) properties.initializeDataSourceBuilder().type(type).build();
  }
  /**
   * 創(chuàng)建 HikariDataSource 數(shù)據(jù)源
   *
   * @param properties 參數(shù)
   * @return 數(shù)據(jù)源
   */
  private static HikariDataSource createHikariDataSource(DataSourceProperties properties) {
    HikariDataSource dataSource = createHikariDataSource(properties, HikariDataSource.class);
    if (StringUtils.hasText(properties.getName())) {
      dataSource.setPoolName(properties.getName());
    }
    return dataSource;
  }

3)使用多數(shù)據(jù)源:

@Autowired
private HikariDataSource dataSourceOne;
@Autowired
@Qualifier("dataSourceTwo")
private HikariDataSource dataSourceTwo;

配置多數(shù)據(jù)源的注意事項(xiàng):

  • 配置多數(shù)據(jù)源時,最好通過 @Primary 指定默認(rèn)數(shù)據(jù)源。
  • 創(chuàng)建數(shù)據(jù)源對象時,建議使用 HikariDataSource 代替 DataSource。
  • 創(chuàng)建數(shù)據(jù)源對象時,注意通過 @Qualifier(“dataSourcePropertiesTwo”) 來指定數(shù)據(jù)源的配置屬性對象。
  • 創(chuàng)建數(shù)據(jù)源對象時,注意創(chuàng)建 Bean 的方法名,最好通過 @Bean(“dataSourceOne”) 來指定數(shù)據(jù)源對象的名稱。
  • 多數(shù)據(jù)源通常結(jié)合 ORM 框架一起使用,具體可參考 Kaddo 框架的 ORM 配置。

到此這篇關(guān)于Spring Boot 使用 HikariCP 連接池配置詳解的文章就介紹到這了,更多相關(guān)Spring Boot 使用 HikariCP 連接池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot自動初始化數(shù)據(jù)庫的方法分享

    SpringBoot自動初始化數(shù)據(jù)庫的方法分享

    我們在項(xiàng)目中應(yīng)該經(jīng)常遇到過初始化數(shù)據(jù)的場景,特別是項(xiàng)目部署或者交付的時候,那么有什么方式可以在項(xiàng)目啟動的時候自動初始化數(shù)據(jù)庫呢,下面小編就來和大家分享幾個方法吧
    2023-08-08
  • Java+MyBatis+MySQL開發(fā)環(huán)境搭建流程詳解

    Java+MyBatis+MySQL開發(fā)環(huán)境搭建流程詳解

    Java的MyBatis框架提供了強(qiáng)大的數(shù)據(jù)庫操作支持,這里我們先在本地的開發(fā)環(huán)境中上手,來看一下Java+MyBatis+MySQL開發(fā)環(huán)境搭建流程詳
    2016-06-06
  • Springboot配置全局跨域未生效,訪問接口報(bào)錯問題及解決

    Springboot配置全局跨域未生效,訪問接口報(bào)錯問題及解決

    這篇文章主要介紹了Springboot配置全局跨域未生效,訪問接口報(bào)錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 解決Request.getParameter獲取不到特殊字符bug問題

    解決Request.getParameter獲取不到特殊字符bug問題

    這篇文章主要介紹了解決Request.getParameter獲取不到特殊字符bug問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringMVC使用第三方組件實(shí)現(xiàn)文件上傳

    SpringMVC使用第三方組件實(shí)現(xiàn)文件上傳

    這篇文章主要介紹了SpringMVC使用第三方組件實(shí)現(xiàn)文件上傳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Java selenium截圖操作的實(shí)現(xiàn)

    Java selenium截圖操作的實(shí)現(xiàn)

    這篇文章主要介紹了Java selenium截圖操作的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java之map的常見用法講解與五種循環(huán)遍歷實(shí)例代碼理解

    Java之map的常見用法講解與五種循環(huán)遍歷實(shí)例代碼理解

    map是一組鍵值對的組合,通俗理解類似一種特殊的數(shù)組,a[key]=val,只不過數(shù)組元素的下標(biāo)是任意一種類型,而且數(shù)組的元素的值也是任意一種類型。有點(diǎn)類似python中的字典。通過"鍵"來取值,類似生活中的字典,已知索引,來查看對應(yīng)的信息
    2021-09-09
  • Spring Boot集成Mybatis中如何顯示日志的實(shí)現(xiàn)

    Spring Boot集成Mybatis中如何顯示日志的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Boot集成Mybatis中如何顯示日志的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java中生產(chǎn)者消費(fèi)者問題總結(jié)

    Java中生產(chǎn)者消費(fèi)者問題總結(jié)

    這篇文章主要介紹了Java中生產(chǎn)者消費(fèi)者問題總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java scala模式匹配機(jī)制詳解

    Java scala模式匹配機(jī)制詳解

    模式匹配語法中,采用match關(guān)鍵字聲明,每個分支采用case關(guān)鍵字進(jìn)行聲明,當(dāng)需要匹配時,會從第一個case分支開始,如果匹配成功,那么執(zhí)行對應(yīng)的邏輯代碼,如果匹配不成功,繼續(xù)執(zhí)行下一個分支進(jìn)行判斷
    2023-02-02

最新評論