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

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

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

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

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

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

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

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

6 . 數(shù)據(jù)庫(kù)連接池在初始化時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫(kù)連接放到連接池中,這些數(shù)據(jù)庫(kù)連接的數(shù)量是由最小數(shù)據(jù)庫(kù)連接數(shù)來(lái)設(shè)定的。無(wú)論這些數(shù)據(jù)庫(kù)連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。連接池的最大數(shù)據(jù)庫(kù)連接數(shù)量限定了這個(gè)連接池能占有的最大連接數(shù),當(dāng)應(yīng)用程序向連接池請(qǐng)求的連接數(shù)超過(guò)最大連 接數(shù)量時(shí),這些請(qǐng)求將被加入到等待隊(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í)候建立的連接個(gè)數(shù)-->
        <property name="initialSize" value="10"/>
        <!-- 連接池最小連接數(shù)-->
        <property name="minIdle" value="10"/>
        <!-- 獲取連接的最大等待時(shí)間,單位:毫秒-->
        <property name="maxWait" value="2000"/>
        <!-- 檢測(cè)連接是否有效-->
        <property name="testWhileIdle" value="true"/>
        <property name="testOnReturn" value="false"/>
        <!-- 用一條偽sql來(lái)檢查連接-->
        <property name="validationQuery" value="select 1"/>
        <!-- 是否緩存PreparedStatement,mysql中建議關(guān)閉-->
        <property name="poolPreparedStatements" value="false"/>
    </bean>
</beans>

3.編寫(xiě)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. 測(cè)試結(jié)果

spring整合druid連接池完成

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

相關(guān)文章

  • Java常用類(lèi)之System類(lèi)的使用指南

    Java常用類(lèi)之System類(lèi)的使用指南

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

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

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

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

    這篇文章主要介紹了Spring注解驅(qū)動(dòng)之關(guān)于@Bean注解指定初始化和銷(xiāo)毀的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    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)分治算法

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