1. 程式人生 > 程式設計 >Spring Boot 如何整合連線池

Spring Boot 如何整合連線池

Spring Boot 整合連線池

在實際開發中應用程式與資料庫互動時,“獲得連線”或在“釋放資源”是非常消耗資源的兩個過程,為了解決如此類效能問題,通常這種情況我們採用連線池技術重用連線Connection物件,如圖1所示。

Spring Boot 如何整合連線池
圖-1

其實Java為資料庫連線池提供了公共的介面:javax.sql.DataSource,各個廠商需要讓自己的連線池實現這個介面。然後我們的應用程式中耦合這個介面,便可以方便的切換不同廠商的連線池,常見的連線池有DBCP、C3P0、DRUID、HikariCP等。

通過連線池獲取連線的一個基本過程,如圖2所示:

Spring Boot 如何整合連線池
圖-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所示。

Spring Boot 如何整合連線池

圖-3

在圖-3中,演示了我們在測試類DataSourceTests中基於DataSource獲取連線的一個基本過程。

二、Spring Boot整合MyBatis框架

MyBatis是一個優秀的持久層框架,底層基於JDBC實現與資料庫的互動。並在JDBC操作的基礎上做了封裝的優化,他藉助靈活的SQL定製,引數以及結果集的對映方式,更好的適應了當前網際網路技術的發展。MyBatis框架的簡單應用框架,如圖-4所示:

Spring Boot 如何整合連線池

圖-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所示

Spring Boot 如何整合連線池

圖-5

第二步:基於id執行商品刪除資訊,業務時序見圖-6

Spring Boot 如何整合連線池

圖-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設計思想的實現如圖所示。

Spring Boot 如何整合連線池

圖-7

在圖7中,Servlet充當MVC中的Controller,負責呼叫model處理業務,負責轉發或重定向到某個頁面,在頁面上呈現資料。模組封裝了對Servlet的技術應用,簡化了程式設計師對請求和響應過程中資料的處理。Spring MVC是Spring框架中基於MVC設計思想實現的一個用於處理Web請求的模組。

以上就是Spring Boot 如何整合連線池的詳細內容,更多關於Spring Boot 整合連線池的資料請關注我們其它相關文章!