Spring提供了在Spring上下文中配置數據源Bean的多種方式,包括:
通過JDBC驅動程序定義的數據源
通過JNDI查找的數據源
連接池的數據源
1.使用JNDI數據源
這種配置的好處在於數據源完全可以在應用程序之外進行管理,這樣應用程序只需在訪問數據庫的時候查找數據源就可以了。另外,在應用服務器中管理的數據源通常以池的方式組織,從而具備更好地性能,並且支持系統管理員對其進行熱切換。
位於jee命名空間下的<jee:jndi-lookup>
元素可以用於檢索JNDI中的任何對象(包括數據源)並將其用於Spring Bean中。
<jee:jndi-lookup id="dataSource" jndi-name="/jdbc/SpitterDS"
resource-ref="true" />
如果應用程序運行在Java應用程序服務器中,則需要將resource-ref屬性設置爲true,這樣給定的jndi-name將會自動添加java:comp/env/前綴。
2.使用數據源連接池
打開Oracle服務
DB
create tablespace springinaction datafile 'E:\oracle\springinaction.dbf' size 50M autoextend on next 5M maxsize 200M;
create user spring identified by spring default tablespace springinaction;
grant resource to spring;
spring-spitter.xml
<bean id="dataSource_DBCP" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="spring" />
<property name="password" value="spring" />
<!--initialSize:初始化連接 -->
<property name="initialSize" value="5" />
<!--maxActive:最大連接數量-->
<property name="maxActive" value="10"/>
</bean>
pom.xml
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
3.基於JDBC驅動的數據源
Spring提供了兩種數據源對象(均位於org.springframework.jdbc.datasource)供選擇。
DriverManagerDataSource:在每個連接請求時都會返回一個新建的連接。
SingleConnectionDataSource:在每個連接請求時都會返回同一個連接。
<bean id="dataSource_JDBC"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="spring" />
<property name="password" value="spring" />
</bean>