欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring使用xml方式整合Druid數(shù)據(jù)源連接池

 更新時(shí)間:2024年10月25日 11:32:21   作者:?惜若?奔已?  
傳統(tǒng)的JDBC數(shù)據(jù)庫連接方式,每次連接都需加載Connection到內(nèi)存并驗(yàn)證,使用后再放回,從而重復(fù)利用數(shù)據(jù)庫連接資源,這不僅降低了系統(tǒng)資源消耗,還避免了頻繁連接導(dǎo)致的服務(wù)器崩潰和內(nèi)存泄漏風(fēng)險(xiǎn),數(shù)據(jù)庫連接池在初始化時(shí)創(chuàng)建并保持最小數(shù)量的數(shù)據(jù)庫連接

1.普通的JDBC數(shù)據(jù)庫連接使用 DriverManager 來獲取,每次向數(shù)據(jù)庫建立連接的時(shí)候都要將 Connection加載到內(nèi)存中,再驗(yàn)證用戶名和密碼(得花費(fèi)0.05s~1s的時(shí)間)。需要數(shù)據(jù)庫連接的時(shí)候,就向數(shù)據(jù)庫要求 一個,執(zhí)行完成后再斷開連接。這樣的方式將會消耗大量的資源和時(shí)間。數(shù)據(jù)庫的連接資源并沒有得到很 好的重復(fù)利用。若同時(shí)有幾百人甚至幾千人在線,頻繁的進(jìn)行數(shù)據(jù)庫連接操作將占用很多的系統(tǒng)資源,嚴(yán) 重的甚至?xí)斐煞?wù)器的崩潰。

對于每一次數(shù)據(jù)庫連接,使用完后都得斷開。否則,如果程序出現(xiàn)異常而未能關(guān)閉,將會導(dǎo)致數(shù)據(jù)庫系統(tǒng) 中的內(nèi)存泄漏,最終將導(dǎo)致重啟數(shù)據(jù)庫。

3.這種開發(fā)不能控制被創(chuàng)建的連接對象數(shù),系統(tǒng)資源會被毫無顧及的分配出去,如連接過多,也可能導(dǎo)致內(nèi) 存泄漏,服務(wù)器崩潰。

4.數(shù)據(jù)庫連接池技術(shù) 為解決傳統(tǒng)開發(fā)中的數(shù)據(jù)庫連接問題,可以采用數(shù)據(jù)庫連接池技術(shù)。
數(shù)據(jù)庫連接池的基本思想:就是為數(shù)據(jù)庫連接建立一個“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要
建立數(shù)據(jù)庫連接時(shí),只需從“緩沖池”中取出一個,使用完畢之后再放回去。

5.數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是重 新建立一個。

6 . 數(shù)據(jù)庫連接池在初始化時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設(shè)定的。無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。連接池的最大數(shù)據(jù)庫連接數(shù)量限定了這個連接池能占有的最大連接數(shù),當(dāng)應(yīng)用程序向連接池請求的連接數(shù)超過最大連 接數(shù)量時(shí),這些請求將被加入到等待隊(duì)列中。

1.導(dǎo)入必要依賴

<!--mysql依賴-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.3.0</version>
        </dependency>
        <!-- druid連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.23</version>
        </dependency>
        <!--spring依賴-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.12</version>
        </dependency>
        <!--spring操作jdbc依賴-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.1.12</version>
        </dependency>

2. 創(chuàng)建spring配置文件(applicationContext.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- 整合Druid數(shù)據(jù)源連接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <!-- 注入相關(guān)的連接屬性 -->
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/demo?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;timeZone=Asia/Shanghai"/>
        <property name="username" value="root"/>
        <property name="password" value="1234"/>
        <!-- 連接池的屬性配置-->
        <!-- 最大連接池?cái)?shù)量-->
        <property name="maxActive" value="200"/>
        <!-- 初始化連接池的時(shí)候建立的連接個數(shù)-->
        <property name="initialSize" value="10"/>
        <!-- 連接池最小連接數(shù)-->
        <property name="minIdle" value="10"/>
        <!-- 獲取連接的最大等待時(shí)間,單位:毫秒-->
        <property name="maxWait" value="2000"/>
        <!-- 檢測連接是否有效-->
        <property name="testWhileIdle" value="true"/>
        <property name="testOnReturn" value="false"/>
        <!-- 用一條偽sql來檢查連接-->
        <property name="validationQuery" value="select 1"/>
        <!-- 是否緩存PreparedStatement,mysql中建議關(guān)閉-->
        <property name="poolPreparedStatements" value="false"/>
    </bean>
</beans>

3.編寫main方法

public class Main {
    public static void main(String[] args) throws Exception {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //從容器中獲取數(shù)據(jù)源連接池(Druid實(shí)現(xiàn))
        DataSource dataSource = context.getBean("dataSource", DataSource.class);
        //可以強(qiáng)轉(zhuǎn)為DruidDataSource
        DruidDataSource ds = (DruidDataSource) dataSource;
        //從池中獲取連接(當(dāng)?shù)谝淮潍@取連接時(shí)才初始化)
        Connection connection = ds.getConnection();
        System.out.println("池大?。? + ds.getPoolingCount());
        connection.close();
        System.out.println("池大小:" + ds.getPoolingCount());
    }
}

4. 測試結(jié)果

spring整合druid連接池完成

到此這篇關(guān)于spring整合使用xml方式整合Druid數(shù)據(jù)源連接池的文章就介紹到這了,更多相關(guān)spring整合Druid數(shù)據(jù)源連接池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis-Plus實(shí)現(xiàn)多表聯(lián)查的方法實(shí)戰(zhàn)

    MyBatis-Plus實(shí)現(xiàn)多表聯(lián)查的方法實(shí)戰(zhàn)

    這篇文章主要給大家介紹了關(guān)于MyBatis-Plus實(shí)現(xiàn)多表聯(lián)查的方法,MyBatis Plus是一款針對MyBatis框架的增強(qiáng)工具,它提供了很多方便的方法來實(shí)現(xiàn)多表聯(lián)查,需要的朋友可以參考下
    2023-07-07
  • Junit單元測試框架架包的導(dǎo)入全過程

    Junit單元測試框架架包的導(dǎo)入全過程

    這篇文章主要介紹了Junit單元測試框架架包的導(dǎo)入全過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 解決引入Redisson可能會出現(xiàn)項(xiàng)目啟動失敗的問題

    解決引入Redisson可能會出現(xiàn)項(xiàng)目啟動失敗的問題

    這篇文章主要介紹了解決引入Redisson可能會出現(xiàn)項(xiàng)目啟動失敗的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 解讀Java報(bào)錯輸出的信息究竟是什么

    解讀Java報(bào)錯輸出的信息究竟是什么

    Java報(bào)錯輸出的信息主要包括異常的主要描述信息和當(dāng)前線程的棧幀信息,棧幀是虛擬機(jī)棧的基本存儲單元,主要由局部變量表、操作數(shù)棧和幀數(shù)據(jù)三部分組成,局部變量表用于存放方法的參數(shù)和局部變量,操作數(shù)棧用于保存計(jì)算過程中產(chǎn)生的中間結(jié)果
    2024-12-12
  • 關(guān)于elasticsearch的match_phrase_prefix查詢詳解

    關(guān)于elasticsearch的match_phrase_prefix查詢詳解

    這篇文章主要介紹了關(guān)于elasticsearch的match_phrase_prefix查詢問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java常用類之System類的使用指南

    Java常用類之System類的使用指南

    System類代表系統(tǒng),系統(tǒng)級的很多屬性和控制方法都放置在該類的內(nèi)部。該類位于java.lang包。本文將通過示例為大家詳細(xì)講講System類的使用,需要的可以參考一下
    2022-07-07
  • Spring Boot 中實(shí)現(xiàn)跨域的多種方式小結(jié)

    Spring Boot 中實(shí)現(xiàn)跨域的多種方式小結(jié)

    Spring Boot提供了多種方式來實(shí)現(xiàn)跨域請求,開發(fā)者可以根據(jù)具體需求選擇適合的方法,在配置時(shí),要確保不僅考慮安全性,還要兼顧應(yīng)用的靈活性和性能,本文給大家介紹Spring Boot 中實(shí)現(xiàn)跨域的多種方式,感興趣的朋友一起看看吧
    2024-01-01
  • Spring注解驅(qū)動之關(guān)于@Bean注解指定初始化和銷毀的方法

    Spring注解驅(qū)動之關(guān)于@Bean注解指定初始化和銷毀的方法

    這篇文章主要介紹了Spring注解驅(qū)動之關(guān)于@Bean注解指定初始化和銷毀的方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 基于Java實(shí)現(xiàn)遍歷文件目錄并去除中文文件名

    基于Java實(shí)現(xiàn)遍歷文件目錄并去除中文文件名

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)遍歷文件目錄并去除中文文件名,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2024-03-03
  • 深入理解java代碼實(shí)現(xiàn)分治算法

    深入理解java代碼實(shí)現(xiàn)分治算法

    分治算法是一種遞歸算法,它將問題劃分為幾個獨(dú)立的子問題,然后遞歸地解決這些子問題,最后將子問題的解合并起來得到原問題的解,本文詳細(xì)的介紹java分治算法,感興趣的可以了解一下
    2023-09-09

最新評論