SpringBoot默認(rèn)使用HikariDataSource數(shù)據(jù)源方式
SpringBoot默認(rèn)使用HikariDataSource數(shù)據(jù)源
定義
數(shù)據(jù)源:存儲了所有建立數(shù)據(jù)庫連接的信息。通過提供正確的數(shù)據(jù)源名稱,你可以找到相應(yīng)的數(shù)據(jù)庫連接。
數(shù)據(jù)源負(fù)責(zé)維持一個數(shù)據(jù)庫連接池,當(dāng)程序創(chuàng)建數(shù)據(jù)源實例時,系統(tǒng)會一次性的創(chuàng)建多個數(shù)據(jù)庫連接,并把這些數(shù)據(jù)連接保存在連接池中。當(dāng)程序需要進行數(shù)據(jù)庫訪問時,無須重新獲得數(shù)據(jù)庫連接,而是從連接池中取出一個空閑的數(shù)據(jù)庫連接,當(dāng)程序使用數(shù)據(jù)庫連接訪問結(jié)束后,無須關(guān)閉數(shù)據(jù)庫連接,而是將數(shù)據(jù)庫連接歸還給連接池即可。通過這種方式可以避免頻繁的獲取數(shù)據(jù)庫連接,關(guān)閉數(shù)據(jù)庫連接所導(dǎo)致的性能下降。
全局配置文件application.yml中spring.datasource下只配置了賬號,密碼,數(shù)據(jù)庫地址,連接驅(qū)動,因為默認(rèn)使用的是HikariDataSource數(shù)據(jù)源。
如果是自定義數(shù)據(jù)源,可以使用
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
測試:
@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()); }
運行結(jié)果:
數(shù)據(jù)源>>>>>>class com.zaxxer.hikari.HikariDataSource
數(shù)據(jù)庫連接
有了數(shù)據(jù)源,就可以拿到數(shù)據(jù)庫連接,使用JdbcTemplate 進行CRUD數(shù)據(jù)庫,即使沒有使用第三方數(shù)據(jù)庫操作框架,如:Mybatis,Hibernate,等Spring本身就可以對原生的JDBC做了輕量級的封裝,即時JdbcTemplate.
SpringBoot不僅提供了默認(rèn)的數(shù)據(jù)源,同時默認(rèn)已經(jīng)配置好了JdbcTemplate放在容器中,程序員只需自己注入即可使用。
JdbcTemplate的自動裝配原理是依賴JdbcTemplateAutoConfiguration類。
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;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決Java?properties文件里面如何寫"\"的問題
由于properties使用“\”相當(dāng)于是java的轉(zhuǎn)義符,如果想要寫出\的效果,只需修改相應(yīng)的寫法即可,對java?properties文件里的"\"寫法感興趣的朋友一起看看吧2022-04-04java學(xué)生信息管理系統(tǒng)設(shè)計(2)
這篇文章主要為大家詳細介紹了java學(xué)生信息管理系統(tǒng)設(shè)計,學(xué)生信息添加進入數(shù)據(jù)庫的事務(wù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11Spring Boot2.0整合ES5實現(xiàn)文章內(nèi)容搜索實戰(zhàn)
這篇文章主要介紹了Spring Boot2.0整合ES5實現(xiàn)文章內(nèi)容搜索實戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01Java使用Thread創(chuàng)建多線程并啟動操作示例
這篇文章主要介紹了Java使用Thread創(chuàng)建多線程并啟動操作,結(jié)合實例形式分析了Java基于Thread類的多線程定義與啟動簡單操作技巧,需要的朋友可以參考下2018-06-06Java Timezone類常見問題_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Java Timezone類常見問題的相關(guān)資料,需要的朋友可以參考下2017-05-05SpringSecurity實現(xiàn)前后端分離的示例詳解
Spring Security默認(rèn)提供賬號密碼認(rèn)證方式,具體實現(xiàn)是在UsernamePasswordAuthenticationFilter 中,這篇文章主要介紹了SpringSecurity實現(xiàn)前后端分離的示例詳解,需要的朋友可以參考下2023-03-03