Spring Boot 如何整合連線池
Spring Boot 整合連線池
在實際開發中應用程式與資料庫互動時,“獲得連線”或在“釋放資源”是非常消耗資源的兩個過程,為了解決如此類效能問題,通常這種情況我們採用連線池技術重用連線Connection物件,如圖1所示。
圖-1
其實Java為資料庫連線池提供了公共的介面:javax.sql.DataSource,各個廠商需要讓自己的連線池實現這個介面。然後我們的應用程式中耦合這個介面,便可以方便的切換不同廠商的連線池,常見的連線池有DBCP、C3P0、DRUID、HikariCP等。
通過連線池獲取連線的一個基本過程,如圖2所示:
圖-2
在圖-2中,使用者先通過DataSource物件的getConnection()方法,獲取一個連線,如果池中有連線,則直接將連線返回給使用者。如果池中沒有連線,則會呼叫Dirver(驅動)物件的connect方法從資料庫獲取,拿到連線後,可以將連線在連線池中也放一份,然後再將連線返回給呼叫使用者。
一、整合HikariCP連線池
HikariCP號稱是目前世界上最快的連線池,有江湖一哥的稱號,目前在SpringBoot工程預設推薦使用HikariCP連線池。我們在建立一個新專案時步驟如下:
第一步:新增依賴。
編輯專案中的pom.xml,查詢MySQL Driver、JDBC API 依賴,依賴新增後,會在pom.xml檔案中自動新增如下兩個依賴配置:
1.mysql資料庫驅動依賴。
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
2.spring物件jdbc支援(此時會預設幫我們下載HiKariCP連線池)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
第二步:配置連線池。
開啟application.properties配置檔案,新增如下內容。
spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root
第三步:進行單元測試。
package com.cy.pj.common.datasource; import java.sql.SQLException; import javax.sql.DataSource; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class DataSourceTests { @Autowired private DataSource dataSource; @Test public void testConnection() throws Exception{ System.out.println(dataSource.getConnection()); } }
第四步:原理分析,如圖-3所示。
圖-3
在圖-3中,演示了我們在測試類DataSourceTests中基於DataSource獲取連線的一個基本過程。
二、Spring Boot整合MyBatis框架
MyBatis是一個優秀的持久層框架,底層基於JDBC實現與資料庫的互動。並在JDBC操作的基礎上做了封裝的優化,他藉助靈活的SQL定製,引數以及結果集的對映方式,更好的適應了當前網際網路技術的發展。MyBatis框架的簡單應用框架,如圖-4所示:
圖-4
在當前網際網路應用專案中,MyBatis框架通常會由spring框架進行資源整合,作為技術層實現資料互動操作。
1、初始配置
新增mybatis啟動依賴
參考mybatis官網,找到springboot選單選項。基於選單項找到MyBatis啟動依賴。
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency>
注意: 在新增此依賴時,一定指定其版本(version),因為在springboot預設配置中沒有設定mybatis框架版本。
2、MyBatis簡易配置
我們添加了mybatis依賴後,spring框架啟動時會對mybatis進行自動配置。例如SqlSessionFactory工廠物件的建立。想要對mybatis進行簡易配置是在application.properties檔案中進行
mybatis.configuration.default-statement-timeout=30 mybatis.configuration.map-underscore-to-camel-case=true
配置mybatis中的sql日誌的輸出:
logging.level.com.cy=DEBUG
3、業務分析
基本業務的實現及單元測試
基於Spring對MyBatis框架的整合,實現對商品庫中資料的刪除操作。
第一步:業務API架構的設計,如圖-5所示
圖-5
第二步:基於id執行商品刪除資訊,業務時序見圖-6
圖-6
業務進階分析及實現
在MyBatis框架中定義SQL對映的方式有兩種:一種是將SQL對映定義在我們的xml對映檔案中,一種是藉助註解將其宣告在介面方法上。我們在實際專案中對於簡單的SQL對映可以直接以註解的方式進行宣告即可,複雜SQL還是要寫到xml中,充分利用動態SQL進行設計會更好些。
三、Spring Boot整合SpringMVC應用
概述
MVC(Model-view-controller)是軟體工程中的一種軟體架構模式,基於此模式把軟體系統分為三個基本部分:模型(Model)、試圖(view)和控制器(Controller)。目的是通過這樣的設計使程式結構更簡潔、直觀,降低問題的複雜程度。其中各個組成部分的職責為:
檢視(view):--UI設計人員進行圖形介面的設計,負責實現與使用者互動。
控制器(controller):--負責獲取請求,處理請求,響應結果。
模組(model):--實現業務邏輯,資料邏輯。
我們在軟體設計時,通常要遵循一定的設計原則。MVC架構迷失的設計中,首先基於單一職責原則讓每個物件各司其職。再通過"高內聚,低耦合"的設計思想實現相關物件之間的互動,這樣可以更好的提高程式可維護性和可擴充套件性。
Java EE 技術體系中,MVC設計思想的實現如圖所示。
圖-7
在圖7中,Servlet充當MVC中的Controller,負責呼叫model處理業務,負責轉發或重定向到某個頁面,在頁面上呈現資料。模組封裝了對Servlet的技術應用,簡化了程式設計師對請求和響應過程中資料的處理。Spring MVC是Spring框架中基於MVC設計思想實現的一個用於處理Web請求的模組。
以上就是Spring Boot 如何整合連線池的詳細內容,更多關於Spring Boot 整合連線池的資料請關注我們其它相關文章!