SpringBoot默認(rèn)使用HikariDataSource數(shù)據(jù)源方式
SpringBoot默認(rèn)使用HikariDataSource數(shù)據(jù)源
定義
數(shù)據(jù)源:存儲(chǔ)了所有建立數(shù)據(jù)庫(kù)連接的信息。通過(guò)提供正確的數(shù)據(jù)源名稱(chēng),你可以找到相應(yīng)的數(shù)據(jù)庫(kù)連接。
數(shù)據(jù)源負(fù)責(zé)維持一個(gè)數(shù)據(jù)庫(kù)連接池,當(dāng)程序創(chuàng)建數(shù)據(jù)源實(shí)例時(shí),系統(tǒng)會(huì)一次性的創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)連接,并把這些數(shù)據(jù)連接保存在連接池中。當(dāng)程序需要進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)時(shí),無(wú)須重新獲得數(shù)據(jù)庫(kù)連接,而是從連接池中取出一個(gè)空閑的數(shù)據(jù)庫(kù)連接,當(dāng)程序使用數(shù)據(jù)庫(kù)連接訪問(wèn)結(jié)束后,無(wú)須關(guān)閉數(shù)據(jù)庫(kù)連接,而是將數(shù)據(jù)庫(kù)連接歸還給連接池即可。通過(guò)這種方式可以避免頻繁的獲取數(shù)據(jù)庫(kù)連接,關(guān)閉數(shù)據(jù)庫(kù)連接所導(dǎo)致的性能下降。
全局配置文件application.yml中spring.datasource下只配置了賬號(hào),密碼,數(shù)據(jù)庫(kù)地址,連接驅(qū)動(dòng),因?yàn)槟J(rèn)使用的是HikariDataSource數(shù)據(jù)源。
如果是自定義數(shù)據(jù)源,可以使用
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
測(cè)試:
@RunWith(SpringRunner.class) @SpringBootTest public class HorseApplicationTests { /** * Spring Boot 默認(rèn)已經(jīng)配置好了數(shù)據(jù)源,程序員可以直接 DI 注入然后使用即可 */ @Resource DataSource dataSource; @Test public void contextLoads() throws SQLException { System.out.println("數(shù)據(jù)源>>>>>>" + dataSource.getClass()); }
運(yùn)行結(jié)果:
數(shù)據(jù)源>>>>>>class com.zaxxer.hikari.HikariDataSource
數(shù)據(jù)庫(kù)連接
有了數(shù)據(jù)源,就可以拿到數(shù)據(jù)庫(kù)連接,使用JdbcTemplate 進(jìn)行CRUD數(shù)據(jù)庫(kù),即使沒(méi)有使用第三方數(shù)據(jù)庫(kù)操作框架,如:Mybatis,Hibernate,等Spring本身就可以對(duì)原生的JDBC做了輕量級(jí)的封裝,即時(shí)JdbcTemplate.
SpringBoot不僅提供了默認(rèn)的數(shù)據(jù)源,同時(shí)默認(rèn)已經(jīng)配置好了JdbcTemplate放在容器中,程序員只需自己注入即可使用。
JdbcTemplate的自動(dòng)裝配原理是依賴JdbcTemplateAutoConfiguration類(lèi)。
HikariDataSource默認(rèn)配置
com.zaxxer.hikari.HikariConfig private static final long IDLE_TIMEOUT = MINUTES.toMillis(10); private static final long MAX_LIFETIME = MINUTES.toMillis(30); private static final int DEFAULT_POOL_SIZE = 10; private static boolean unitTest = false; // Properties changeable at runtime through the HikariConfigMXBean // private volatile long connectionTimeout; private volatile long validationTimeout; private volatile long idleTimeout; private volatile long leakDetectionThreshold; private volatile long maxLifetime; private volatile int maxPoolSize; private volatile int minIdle; private volatile String username; private volatile String password;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決Java?properties文件里面如何寫(xiě)"\"的問(wèn)題
由于properties使用“\”相當(dāng)于是java的轉(zhuǎn)義符,如果想要寫(xiě)出\的效果,只需修改相應(yīng)的寫(xiě)法即可,對(duì)java?properties文件里的"\"寫(xiě)法感興趣的朋友一起看看吧2022-04-04使用@Validated注解進(jìn)行校驗(yàn)卻沒(méi)有效果的解決
這篇文章主要介紹了使用@Validated注解進(jìn)行校驗(yàn)卻沒(méi)有效果的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04java學(xué)生信息管理系統(tǒng)設(shè)計(jì)(2)
這篇文章主要為大家詳細(xì)介紹了java學(xué)生信息管理系統(tǒng)設(shè)計(jì),學(xué)生信息添加進(jìn)入數(shù)據(jù)庫(kù)的事務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Spring Boot2.0整合ES5實(shí)現(xiàn)文章內(nèi)容搜索實(shí)戰(zhàn)
這篇文章主要介紹了Spring Boot2.0整合ES5實(shí)現(xiàn)文章內(nèi)容搜索實(shí)戰(zhàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Java使用Thread創(chuàng)建多線程并啟動(dòng)操作示例
這篇文章主要介紹了Java使用Thread創(chuàng)建多線程并啟動(dòng)操作,結(jié)合實(shí)例形式分析了Java基于Thread類(lèi)的多線程定義與啟動(dòng)簡(jiǎn)單操作技巧,需要的朋友可以參考下2018-06-06Java Timezone類(lèi)常見(jiàn)問(wèn)題_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java Timezone類(lèi)常見(jiàn)問(wèn)題的相關(guān)資料,需要的朋友可以參考下2017-05-05SpringSecurity實(shí)現(xiàn)前后端分離的示例詳解
Spring Security默認(rèn)提供賬號(hào)密碼認(rèn)證方式,具體實(shí)現(xiàn)是在UsernamePasswordAuthenticationFilter 中,這篇文章主要介紹了SpringSecurity實(shí)現(xiàn)前后端分離的示例詳解,需要的朋友可以參考下2023-03-03