1. 程式人生 > >Spring配置HikariCP連線池HikariCP連線池

Spring配置HikariCP連線池HikariCP連線池

   在spring框架中,經常將連線池的設定引數獨立成一個.properties檔案,它可以根據客戶需求,自定義一些相關的引數。而引數的讀取一般寫到applicationContext.xml的檔案中(後文將會詳細介紹該檔案的作用)。然後通過org.springframework.beans.factory.config.PropertyPlaceholderConfigurer類將.properties(key/value形式)檔案中設定的值在xml中替換為佔位該鍵($key)的值,這樣的設計可以靈活些。

       上圖為.properties檔案,用來配置連線池的一些引數。其中jdbc.driver是一個數據庫驅動類,根據你的資料庫來決定。MySQL的jdbc驅動一般有兩種:一種是org.gjt.mm.mysql.Driver,這種是git組織提供的,現在基本很少用;另一種就是圖片中的com.mysql.jdbc.Driver,這是mysql官方提供的驅動。

        jdbc.url是資料庫地址,它的格式如下:jdbc:mysql://【host:port】/【database】【?引數名1=引數值1&引數名2=引數值2】...,下圖是幾個比較重要的引數:

        jdbc.minCon和jdbc.maxCon的設定需要考慮以下因素:最小連線數如果設定過大,而應用程式對資料庫連線的使用量不大時,將會有大量的資料庫連線資源被浪費。最大連線數如果設定過小,而應用程式對資料庫連線的使用量過大時,將會有請求被加入到等待佇列中,影響以後的資料庫操作。

       連線池的數量大致可以通過以下公式來計算:pool size=Tn*(Cm-1)+1,其中Tn為最大執行緒數量,Cm為單個執行緒上最大併發量。

       配置好.properties檔案後,接著瞭解applicationContext.xml檔案的設定。說到該檔案就不得不提spring的思想依賴注入。在開發中,有時某個類需要依賴其他類的方法,通常的做法是new一個依賴類,在呼叫類例項的方法。這種方法存在的問題是new出來的例項不好管理。因此為了解決這個問題,spring提出了一種依賴注入的思想。即依賴類不需要程式設計師來例項化,而是通過spring容器來幫我們new指定例項並且將該例項注入到需要的物件類中。spring提供了兩種注入方式:建構函式注入和方法注入。下圖所示為setter方法注入。整個applicationContext.xml(配置檔案)的作用是把類放入到spring容器中,在<bean></bean>這個裡面就相當於是整個spring的bean的大包,需要將什麼類納入到spring容器中,就在這個裡面進行說明。

       第一行程式碼,定義一個id是propertyConfigurer的bean。每個bean的id屬性是該bean的唯一標識,程式通過id屬性訪問bean,bean與bean的依賴關係也通過id屬性完成。class指定該bean例項的實現類。在spring中,使用PropertyPlaceholderConfigurer可以在xml配置檔案中加入外部屬性檔案,當然也可以指定外部檔案的編碼,也可以引入多個屬性檔案。上圖中的classpath是引用src目錄下的檔案寫法,當存在多個properties檔案時,配置就需要使用locations了。

       假設注入的類的屬性包括各自的setter和getter方法,還有一個包含這些屬性的構造方法,如果用spring來管理這個物件,那麼有兩種方式為該物件設定屬性:設值注入和構造注入。兩種方式各有優點,設值注入需要該bean包含這些屬性的setter方法,與傳統的javabean的寫法更相似,程式開發人員也更容易理解,接受。而構造注入需要該bean包含帶有這些屬性的構造器,構造注入可以在構造器中決定依賴關係的注入順序,優先依賴的優先注入。上圖為設值注入。Destroy-method=“shutdown”的作用是當資料庫連線不使用的時候,就把該連線重新放到資料池中。方便下次使用