欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂Java培訓(xùn)之Spring Boot如何使用HikariCP連接池詳解

2019-03-11 14:38:43 2537瀏覽

今天扣丁學(xué)堂Java培訓(xùn)老師給大家介紹一下關(guān)于SpringBoot如何使用HikariCP連接池的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),首先Springboot讓Java開發(fā)更加美好,更加簡(jiǎn)潔,更加簡(jiǎn)單。SpringBoot2.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ù)連接池。



基本使用

在SpringBoot2.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

示例代碼如下:

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)原理

SpringBoot使用如下方式整合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為例。

注意springboot2.0對(duì)springboot1.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。Springboot2.0的metrics對(duì)比springboot1.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

以上就是關(guān)于扣丁學(xué)堂Java培訓(xùn)之Spring Boot如何使用HikariCP連接池詳解的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,想要了解更多關(guān)于Java開發(fā)方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺(tái),扣學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平有專業(yè)的Java講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的Java視頻教程定能讓你快速掌握J(rèn)ava從入門到精通開發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂Java技術(shù)交流群:670348138。


扣丁學(xué)堂微信公眾號(hào)


【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】


查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 Java開發(fā)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部