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)程序需要進(jìn)行數(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 進(jìn)行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)文章
SpringBoot+websocket實現(xiàn)消息對話功能
WebSocket是一種在Web應(yīng)用程序中實現(xiàn)實時雙向通信的技術(shù),它可以用于在線游戲、在線聊天、推送通知、實時監(jiān)控等,并且比傳統(tǒng)的輪詢技術(shù)更加高效和可靠,本文就給大家介紹基于SpringBoot+websocket實現(xiàn)消息對話功能,感興趣的小伙伴可以自己動手試一試2023-09-09
關(guān)于Java?中?Future?的?get?方法超時問題
這篇文章主要介紹了Java?中?Future?的?get?方法超時,最常見的理解就是,“超時以后,當(dāng)前線程繼續(xù)執(zhí)行,線程池里的對應(yīng)線程中斷”,真的是這樣嗎?本文給大家詳細(xì)介紹,需要的朋友參考下吧2022-06-06
SpringBoot中的Profile多環(huán)境配置方法
這篇文章主要介紹了SpringBoot中的Profile多環(huán)境配置,SpringBoot提供了兩種多環(huán)境配置的方式,分別是使用profile文件進(jìn)行多環(huán)境配置以及使用@Profile注解進(jìn)行多環(huán)境配置,需要的朋友可以參考下2023-01-01
使用@ConditionalOnProperty控制是否加載的操作
這篇文章主要介紹了使用@ConditionalOnProperty控制是否加載的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
spring boot 實現(xiàn)配置多個DispatcherServlet最簡單方式
這篇文章主要介紹了spring boot 實現(xiàn)配置多個DispatcherServlet最簡單方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
SpringCloud?Function?SpEL注入漏洞分析及環(huán)境搭建
SpringCloud 是一套分布式系統(tǒng)的解決方案,常見的還有阿里巴巴的Dubbo,F(xiàn)ass的底層實現(xiàn)就是函數(shù)式編程,SpringCloud Function 就是Spring提供的分布式函數(shù)式編程組件,下面給大家介紹下SpringCloud?Function?SpEL注入漏洞分析,感興趣的朋友一起看看吧2022-04-04

