最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 如何整合連接池

 更新時間:2020年11月02日 09:34:24   作者:_我姓李  
這篇文章主要介紹了Spring Boot 如何整合連接池,幫助大家更好的理解和學(xué)習(xí)spring boot框架,感興趣的朋友可以了解下

Spring Boot 整合連接池

在實(shí)際開發(fā)中應(yīng)用程序與數(shù)據(jù)庫交互時,“獲得連接”或在“釋放資源”是非常消耗資源的兩個過程,為了解決如此類性能問題,通常這種情況我們采用連接池技術(shù)重用連接Connection對象,如圖1所示。


圖-1

其實(shí)Java為數(shù)據(jù)庫連接池提供了公共的接口:javax.sql.DataSource,各個廠商需要讓自己的連接池實(shí)現(xiàn)這個接口。然后我們的應(yīng)用程序中耦合這個接口,便可以方便的切換不同廠商的連接池,常見的連接池有DBCP、C3P0、DRUID、HikariCP等。

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


圖-2

在圖-2中,用戶先通過DataSource對象的getConnection()方法,獲取一個連接,如果池中有連接,則直接將連接返回給用戶。如果池中沒有連接,則會調(diào)用Dirver(驅(qū)動)對象的connect方法從數(shù)據(jù)庫獲取,拿到連接后,可以將連接在連接池中也放一份,然后再將連接返回給調(diào)用用戶。

一、整合HikariCP連接池

HikariCP號稱是目前世界上最快的連接池,有江湖一哥的稱號,目前在SpringBoot工程默認(rèn)推薦使用HikariCP連接池。我們在創(chuàng)建一個新項(xiàng)目時步驟如下:

第一步:添加依賴。

編輯項(xiàng)目中的pom.xml,查找MySQL Driver、JDBC API 依賴,依賴添加后,會在pom.xml文件中自動添加如下兩個依賴配置:

1.mysql數(shù)據(jù)庫驅(qū)動依賴。

<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <scope>runtime</scope>
</dependency>

2.spring對象jdbc支持(此時會默認(rèn)幫我們下載HiKariCP連接池)

<dependency>
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

第二步:配置連接池。

打開application.properties配置文件,添加如下內(nèi)容。

spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8&characterEncoding=utf8

spring.datasource.username=root

spring.datasource.password=root

第三步:進(jìn)行單元測試。

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是一個優(yōu)秀的持久層框架,底層基于JDBC實(shí)現(xiàn)與數(shù)據(jù)庫的交互。并在JDBC操作的基礎(chǔ)上做了封裝的優(yōu)化,他借助靈活的SQL定制,參數(shù)以及結(jié)果集的映射方式,更好的適應(yīng)了當(dāng)前互聯(lián)網(wǎng)技術(shù)的發(fā)展。MyBatis框架的簡單應(yīng)用框架,如圖-4所示:

圖-4

在當(dāng)前互聯(lián)網(wǎng)應(yīng)用項(xiàng)目中,MyBatis框架通常會由spring框架進(jìn)行資源整合,作為技術(shù)層實(shí)現(xiàn)數(shù)據(jù)交互操作。

1、初始配置

添加mybatis啟動依賴
參考mybatis官網(wǎng),找到springboot菜單選項(xiàng)?;诓藛雾?xiàng)找到MyBatis啟動依賴。

 <dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>2.1.1</version>
 </dependency>

注意: 在添加此依賴時,一定指定其版本(version),因?yàn)樵趕pringboot默認(rèn)配置中沒有設(shè)置mybatis框架版本。

2、MyBatis簡易配置
我們添加了mybatis依賴后,spring框架啟動時會對mybatis進(jìn)行自動配置。例如SqlSessionFactory工廠對象的創(chuàng)建。想要對mybatis進(jìn)行簡易配置是在application.properties文件中進(jìn)行

mybatis.configuration.default-statement-timeout=30
mybatis.configuration.map-underscore-to-camel-case=true

配置mybatis中的sql日志的輸出:

logging.level.com.cy=DEBUG

3、業(yè)務(wù)分析
基本業(yè)務(wù)的實(shí)現(xiàn)及單元測試

基于Spring對MyBatis框架的整合,實(shí)現(xiàn)對商品庫中數(shù)據(jù)的刪除操作。

第一步:業(yè)務(wù)API架構(gòu)的設(shè)計(jì),如圖-5所示

圖-5

第二步:基于id執(zhí)行商品刪除信息,業(yè)務(wù)時序見圖-6

圖-6

業(yè)務(wù)進(jìn)階分析及實(shí)現(xiàn)

在MyBatis框架中定義SQL映射的方式有兩種:一種是將SQL映射定義在我們的xml映射文件中,一種是借助注解將其聲明在接口方法上。我們在實(shí)際項(xiàng)目中對于簡單的SQL映射可以直接以注解的方式進(jìn)行聲明即可,復(fù)雜SQL還是要寫到xml中,充分利用動態(tài)SQL進(jìn)行設(shè)計(jì)會更好些。

三、Spring Boot整合SpringMVC應(yīng)用

概述

MVC(Model-view-controller)是軟件工程中的一種軟件架構(gòu)模式,基于此模式把軟件系統(tǒng)分為三個基本部分:模型(Model)、試圖(view)和控制器(Controller)。目的是通過這樣的設(shè)計(jì)使程序結(jié)構(gòu)更簡潔、直觀,降低問題的復(fù)雜程度。其中各個組成部分的職責(zé)為:

視圖(view):--UI設(shè)計(jì)人員進(jìn)行圖形界面的設(shè)計(jì),負(fù)責(zé)實(shí)現(xiàn)與用戶交互。
控制器(controller):--負(fù)責(zé)獲取請求,處理請求,響應(yīng)結(jié)果。
模塊(model):--實(shí)現(xiàn)業(yè)務(wù)邏輯,數(shù)據(jù)邏輯。

我們在軟件設(shè)計(jì)時,通常要遵循一定的設(shè)計(jì)原則。MVC架構(gòu)迷失的設(shè)計(jì)中,首先基于單一職責(zé)原則讓每個對象各司其職。再通過"高內(nèi)聚,低耦合"的設(shè)計(jì)思想實(shí)現(xiàn)相關(guān)對象之間的交互,這樣可以更好的提高程序可維護(hù)性和可擴(kuò)展性。

Java EE 技術(shù)體系中,MVC設(shè)計(jì)思想的實(shí)現(xiàn)如圖所示。

圖-7

在圖7中,Servlet充當(dāng)MVC中的Controller,負(fù)責(zé)調(diào)用model處理業(yè)務(wù),負(fù)責(zé)轉(zhuǎn)發(fā)或重定向到某個頁面,在頁面上呈現(xiàn)數(shù)據(jù)。模塊封裝了對Servlet的技術(shù)應(yīng)用,簡化了程序員對請求和響應(yīng)過程中數(shù)據(jù)的處理。Spring MVC是Spring框架中基于MVC設(shè)計(jì)思想實(shí)現(xiàn)的一個用于處理Web請求的模塊。

以上就是Spring Boot 如何整合連接池的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot 整合連接池的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java并發(fā)工具類CountDownLatch CyclicBarrier使用詳解

    Java并發(fā)工具類CountDownLatch CyclicBarrier使用詳解

    這篇文章主要為大家介紹了Java并發(fā)工具類CountDownLatch CyclicBarrier使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • springboot如何自定義pom內(nèi)子依賴版本

    springboot如何自定義pom內(nèi)子依賴版本

    這篇文章主要介紹了springboot如何自定義pom內(nèi)子依賴版本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot參數(shù)校驗(yàn)之@Valid的使用詳解

    SpringBoot參數(shù)校驗(yàn)之@Valid的使用詳解

    這篇文章主要通過示例為大家詳細(xì)介紹一下介紹了SpringBoot參數(shù)校驗(yàn)中@Valid的使用方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-06-06
  • java實(shí)現(xiàn)波雷費(fèi)密碼算法示例代碼

    java實(shí)現(xiàn)波雷費(fèi)密碼算法示例代碼

    這篇文章主要介紹了java實(shí)現(xiàn)波雷費(fèi)密碼算法示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 如何在pom文件中引入本地jar包并打包

    如何在pom文件中引入本地jar包并打包

    在項(xiàng)目中使用本地JAR文件的方法有很多,下面這篇文章主要給大家介紹了關(guān)于如何在pom文件中引入本地jar包并打包的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • ZooKeeper官方文檔之Java案例解讀

    ZooKeeper官方文檔之Java案例解讀

    ZooKeeper官方提供了一個Java監(jiān)聽的例子,本文是我對該例子的學(xué)習(xí)筆記。可以做為幫助理解此例子的資料,有需要的朋友可以借鑒參考下
    2022-01-01
  • Spring框架中部署log4j.xml的詳細(xì)步驟

    Spring框架中部署log4j.xml的詳細(xì)步驟

    Log4j是一個常用的日志記錄工具,它可以幫助我們記錄應(yīng)用程序的運(yùn)行日志并進(jìn)行靈活的配置,在Spring框架中,我們可以很方便地部署log4j.xml配置文件來管理日志記錄,這篇文章主要介紹了Spring框架中部署log4j.xml的詳細(xì)步驟并提供相應(yīng)的代碼示例,需要的朋友可以參考下
    2023-09-09
  • 使用nexus3.X上傳本地jar包并且通過pom讀取的解決方案(全網(wǎng)最新)

    使用nexus3.X上傳本地jar包并且通過pom讀取的解決方案(全網(wǎng)最新)

    這篇文章主要介紹了使用nexus3.X上傳本地jar包并且通過pom讀取的解決方案(全網(wǎng)最新),本文內(nèi)容有點(diǎn)長,結(jié)合圖文實(shí)例給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式

    java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式

    Java WebSocket是一種基于TCP協(xié)議的雙向全雙工消息傳輸技術(shù),它允許服務(wù)器和客戶端之間實(shí)時通信,具有低延遲和高效率的特點(diǎn),下面這篇文章主要給大家介紹了關(guān)于java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式,需要的朋友可以參考下
    2024-08-08
  • 解讀easyexcel中的常用注解

    解讀easyexcel中的常用注解

    這篇文章主要介紹了關(guān)于easyexcel中的常用注解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評論

东宁县| 墨玉县| 台前县| 民丰县| 安西县| 陕西省| 赤水市| 玉林市| 临武县| 湖南省| 太康县| 平遥县| 兴隆县| 巴塘县| 本溪市| 关岭| 西林县| 佳木斯市| 尤溪县| 淅川县| 徐水县| 武穴市| 福海县| 宜州市| 泰兴市| 洛扎县| 高碑店市| 娱乐| 广昌县| 镇沅| 新建县| 谢通门县| 寻乌县| 古蔺县| 泗洪县| 长岛县| 华坪县| 民和| 呼伦贝尔市| 灵寿县| 贺州市|