spring配置資料來源的4種方式以及Druid連線池
阿新 • • 發佈:2018-12-18
第一種:使用spring自帶的DriverManagerDataSource(無連線池的作用)
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@192.168.24.102:1521:sms</value> </property> <property name="username"> <value>test</value> </property> <property name="password"> <value>test</value> </property> </bean>
缺點:並沒有提供池化連線的機制,每次呼叫getConnection()獲取新連線時,只是簡單地建立一個新的連線。因此,這個資料來源類比較適合在單元測試 或簡單的獨立應用中使用,因為它不需要額外的依賴類。
第二種:DBCP資料來源,需要引入第三方的依賴jar包(使用了連線池技術)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3309/sampledb" /> <property name="username" value="root" /> <property name="password" value="1234" /> </bean>
注意的地方:BasicDataSource提供了close()方法關閉資料來源,所以必須設定destroy-method=”close”屬性, 以便Spring容器關閉時,資料來源能夠正常關閉。
第三種:C3P0資料來源,需要引入第三方的依賴jar包(使用了連線池技術)
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value=" oracle.jdbc.driver.OracleDriver "/> <property name="jdbcUrl" value=" jdbc:oracle:thin:@localhost:1521:ora9i "/> <property name="user" value="admin"/> <property name="password" value="1234"/> </bean>
優點:C3P0擁有比DBCP更豐富的配置屬性,通過這些屬性,可以對資料來源進行各種有效的控制。
第四種:JNDI資料來源
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/bbt"/>
</bean>
說明:如果應用配置在高效能的應用伺服器(如WebLogic或Websphere等)上,我們可能更希望使用應用伺服器本身提供的資料來源。Spring為此專門提供引用JNDI資源的JndiObjectFactoryBean類。通過jndiName指定引用的JNDI資料來源名稱。
druid連線池:可以對Spring web工程的JDBC進行監控和統計
Druid介紹:
Druid是一個JDBC元件庫,包括資料庫連線池、SQL Parser等元件。DruidDataSource是最好的資料庫連線池。參考Druid wiki上的文章 <<各連線池的效能比較>>