最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot如何使用HikariCP連接池詳解

 更新時(shí)間:2019年03月11日 11:44:03   作者:青蛙小白  
這篇文章主要給大家介紹了關(guān)于Spring Boot如何使用HikariCP連接池的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用springboot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

Springboot讓Java開發(fā)更加美好,更加簡(jiǎn)潔,更加簡(jiǎn)單。Spring Boot 2.x中使用HikariCP作為默認(rèn)的數(shù)據(jù)連接池。 HikariCP使用Javassist字節(jié)碼操作庫(kù)來實(shí)現(xiàn)動(dòng)態(tài)代理,優(yōu)化并精簡(jiǎn)了字節(jié)碼,同時(shí)內(nèi)部使用 com.zaxxer.hikari.util.FastList 代替ArrayList、使用了更好的并發(fā)集合類 com.zaxxer.hikari.util.ConcurrentBag ,“號(hào)稱”是目前最快的數(shù)據(jù)庫(kù)連接池。

下面話不多說了,來一起看看詳細(xì)的介紹吧

基本使用

在Spring Boot 2.x中使用HikariCP十分簡(jiǎn)單,只需引入依賴 implementation 'org.springframework.boot:spring-boot-starter-jdbc'

pluginManagement {
	repositories {
		gradlePluginPortal()
	}
}
rootProject.name = 'datasource-config'

plugins {
	id 'org.springframework.boot' version '2.1.3.RELEASE'
	id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'spring-boot-guides'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
	runtimeOnly 'com.h2database:h2'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

配置文件如下:

spring:
 datasource:
 url: jdbc:h2:mem:demodb
 username: sa
 password:
 hikari: # https://github.com/brettwooldridge/HikariCP (uses milliseconds for all time values)
 maximumPoolSize: 10
 minimumIdle: 2
 idleTimeout: 600000
 connectionTimeout: 30000
 maxLifetime: 1800000

關(guān)于連接池的具體配置參數(shù)詳見 HikariCP 。

示例代碼如下:

package springbootguides.datasourceconfig;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import javax.sql.DataSource;
import java.sql.Connection;

@SpringBootApplication
public class DatasourceConfigApplication implements CommandLineRunner {

	@Autowired
	private DataSource datasource;

	@Override
	public void run(String... args) throws Exception {
		try(Connection conn = datasource.getConnection()) {
			System.out.println(conn);
		}
	}

	public static void main(String[] args) {
		SpringApplication.run(DatasourceConfigApplication.class, args);
	}

}

實(shí)現(xiàn)原理

Spring Boot使用如下方式整合HikariCP:入口是 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration ,通過 org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.Hikari 中的 @Bean 方式創(chuàng)建 com.zaxxer.hikari.HikariDataSource

/**
	 * Hikari DataSource configuration.
	 */
	@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")
		public HikariDataSource dataSource(DataSourceProperties properties) {
			HikariDataSource dataSource = createDataSource(properties,
					HikariDataSource.class);
			if (StringUtils.hasText(properties.getName())) {
				dataSource.setPoolName(properties.getName());
			}
			return dataSource;
		}

	}

@ConfigurationProperties(prefix = "spring.datasource.hikari") 會(huì)自動(dòng)把 spring.datasource.hikari.* 相關(guān)的連接池配置信息注入到創(chuàng)建的HikariDataSource實(shí)例中。

HikariCP的監(jiān)控和遙測(cè)

因?yàn)樵谖覀兊奈⒎?wù)體系中使用的監(jiān)控系統(tǒng)是Prometheus,這里以Prometheus為例。

注意spring boot 2.0對(duì)spring boot 1.x的metrics進(jìn)行了重構(gòu),不再向后兼容,主要是在spring-boot-acutator中使用了micrometer,支持了更多的監(jiān)控系統(tǒng):Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront。Spring boot 2.0的metrics對(duì)比spring boot 1.x除了引入micrometer外,更大的體現(xiàn)是支持了tag,這也說明Prometheus、Influx等支持Tag的時(shí)序監(jiān)控?cái)?shù)據(jù)模型的監(jiān)控系統(tǒng)已經(jīng)成為主流。

在前面示例中的build.gradle中加入如下依賴:

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'

配置文件applycation.yaml中加入對(duì)actuator的配置:

management:
 endpoints:
 web:
  exposure:
  include: "health,info,prometheus"
 server:
 port: 8079
 servlet:
  context-path: /

注意這里引入了web和actuator依賴,通過配置 management.server.port 指定actuator的web端點(diǎn)為8089端口,通過 management.endpoints.include 對(duì)外開放 /actuator/prometheus ,在引入 io.micrometer:micrometer-registry-prometheus 依賴之后,端點(diǎn) /actuator/prometheus 當(dāng)即生效。

curl http://localhost:8079/actuator/prometheus | grep hikari
# TYPE hikaricp_connections_acquire_seconds summary
hikaricp_connections_acquire_seconds_count{pool="HikariPool-1",} 3.0
hikaricp_connections_acquire_seconds_sum{pool="HikariPool-1",} 0.001230082
# HELP hikaricp_connections_acquire_seconds_max Connection acquire time
# TYPE hikaricp_connections_acquire_seconds_max gauge
hikaricp_connections_acquire_seconds_max{pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_min Min connections
# TYPE hikaricp_connections_min gauge
hikaricp_connections_min{pool="HikariPool-1",} 2.0
# TYPE hikaricp_connections_timeout_total counter
hikaricp_connections_timeout_total{pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_pending Pending threads
# TYPE hikaricp_connections_pending gauge
hikaricp_connections_pending{pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_usage_seconds Connection usage time
# TYPE hikaricp_connections_usage_seconds summary
hikaricp_connections_usage_seconds_count{pool="HikariPool-1",} 3.0
hikaricp_connections_usage_seconds_sum{pool="HikariPool-1",} 0.06
# HELP hikaricp_connections_usage_seconds_max Connection usage time
# TYPE hikaricp_connections_usage_seconds_max gauge
hikaricp_connections_usage_seconds_max{pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_max Max connections
# TYPE hikaricp_connections_max gauge
hikaricp_connections_max{pool="HikariPool-1",} 10.0
# HELP hikaricp_connections Total connections
# TYPE hikaricp_connections gauge
hikaricp_connections{pool="HikariPool-1",} 2.0
# HELP hikaricp_connections_creation_seconds_max Connection creation time
# TYPE hikaricp_connections_creation_seconds_max gauge
hikaricp_connections_creation_seconds_max{pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_creation_seconds Connection creation time
# TYPE hikaricp_connections_creation_seconds summary
hikaricp_connections_creation_seconds_count{pool="HikariPool-1",} 1.0
hikaricp_connections_creation_seconds_sum{pool="HikariPool-1",} 0.001
# HELP hikaricp_connections_idle Idle connections
# TYPE hikaricp_connections_idle gauge
hikaricp_connections_idle{pool="HikariPool-1",} 2.0
# HELP hikaricp_connections_active Active connections
# TYPE hikaricp_connections_active gauge
hikaricp_connections_active{pool="HikariPool-1",} 0.0

參考

HikariCP

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 簡(jiǎn)單了解SpringBoot HATEOAS使用方法

    簡(jiǎn)單了解SpringBoot HATEOAS使用方法

    這篇文章主要介紹了簡(jiǎn)單了解SpringBoot HATEOAS使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Spring實(shí)現(xiàn)對(duì)象注入的三種方法詳解

    Spring實(shí)現(xiàn)對(duì)象注入的三種方法詳解

    這篇文章主要為大家學(xué)習(xí)介紹了Spring中實(shí)現(xiàn)對(duì)象注入的三種常用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下
    2023-07-07
  • mybatis配置文件簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    mybatis配置文件簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了mybatis配置文件簡(jiǎn)介的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java Spring事務(wù)的隔離級(jí)別詳解

    Java Spring事務(wù)的隔離級(jí)別詳解

    這篇文章主要介紹了Java Spring事務(wù)的隔離級(jí)別,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • SpringBoot實(shí)現(xiàn)數(shù)據(jù)預(yù)熱的方式小結(jié)

    SpringBoot實(shí)現(xiàn)數(shù)據(jù)預(yù)熱的方式小結(jié)

    這里用到的數(shù)據(jù)預(yù)熱,就是在項(xiàng)目啟動(dòng)時(shí)將一些數(shù)據(jù)量較大的數(shù)據(jù)加載到緩存中(筆者這里用的Redis),那么在項(xiàng)目啟動(dòng)有哪些方式可以實(shí)現(xiàn)數(shù)據(jù)預(yù)熱呢,本文就來給大家講講幾種實(shí)現(xiàn)數(shù)據(jù)預(yù)熱的方式,需要的朋友可以參考下
    2023-09-09
  • spring?cloud?gateway中配置uri三種方式

    spring?cloud?gateway中配置uri三種方式

    gateway?組件是SpringCloud?組件中的網(wǎng)關(guān)組件,主要是解決路由轉(zhuǎn)發(fā)的問題,跟nginx有點(diǎn)類似,區(qū)別是nginx多用在前端上,gateway用在后端上,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-08-08
  • Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理解讀

    Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理解讀

    這篇文章主要介紹了Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理詳解,CountDownLatch中調(diào)用await方法線程需要等待所有調(diào)用countDown方法的線程執(zhí)行,這就很適合一個(gè)業(yè)務(wù)需要一些準(zhǔn)備條件,等準(zhǔn)備條件準(zhǔn)備好之后再繼續(xù)執(zhí)行,需要的朋友可以參考下
    2023-12-12
  • idea搭建SSM框架遇踩的坑(附完整過程)

    idea搭建SSM框架遇踩的坑(附完整過程)

    最近準(zhǔn)備搭建一個(gè)SSM框架,由于很久沒有搭建了,一來就遇到各種問題,折騰了一天終于搞定了,特此記錄一下遇到的問題,下面這篇文章主要給大家介紹了關(guān)于idea搭建SSM框架遇踩的坑,文中還附完整過程,需要的朋友可以參考下
    2023-04-04
  • SpringCloud?Gateway中GatewayFilterChain執(zhí)行流程詳解

    SpringCloud?Gateway中GatewayFilterChain執(zhí)行流程詳解

    Spring?Cloud?Gateway旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的、統(tǒng)一的?API?路由管理方式。Spring?Cloud?Gateway?作為?Spring?Cloud?生態(tài)系中的網(wǎng)關(guān),它不僅提供統(tǒng)一的路由方式,并且基于?Filter?鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點(diǎn)和限流等
    2022-10-10
  • SpringBoot采用Dynamic-Datasource方式實(shí)現(xiàn)多JDBC數(shù)據(jù)源

    SpringBoot采用Dynamic-Datasource方式實(shí)現(xiàn)多JDBC數(shù)據(jù)源

    在某些情況下,如果我們需要配置多個(gè)數(shù)據(jù)源,本文主要介紹了SpringBoot采用Dynamic-Datasource方式實(shí)現(xiàn)多JDBC數(shù)據(jù)源,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10

最新評(píng)論

乐亭县| 绵阳市| 平和县| 当雄县| 锡林浩特市| 贵定县| 庄浪县| 涪陵区| 安龙县| 隆林| 武宁县| 杭州市| 阿勒泰市| 朔州市| 武夷山市| 赤峰市| 道真| 虞城县| 东源县| 天津市| 东明县| 泸西县| 金堂县| 普格县| 宁阳县| 安阳县| 芜湖市| 白城市| 遵化市| 衡水市| 西安市| 兴安盟| 玉山县| 洛川县| 孝义市| 金溪县| 迁安市| 古田县| 革吉县| 黑山县| 胶州市|