1. 程式人生 > >【Spring】配置資料庫資源

【Spring】配置資料庫資源



(1)Spring中配置資料來源bean的方式

1、通過JDBC驅動程式定義的資料來源
2、通過JNDI查詢的資料來源
3、連線池的資料來源

(2)使用JNDI資料來源

好處:資料來源完全可以在應用程式之外進行管理。
使用<jee:jndi-lookup>元素將其裝配到Spring中:<jee:jndi-lookup  id =”dataSource”  jndi-name=”/jdbc/SpitterDS”  resource-ref=”true”/>說明:
jndi-name:指定JNDI中資源的名稱
resource-ref:如果應用程式執行在Java應用伺服器中,需要屬性設定為true,這樣給定的jndi-name將會自動新增“java:comp/env/”字首(該字首表示為JavaEE環境必須的)
通過Java配置,藉助JndiObjectFactoryBean從JNDI中查詢DataSource:
@Bean
public JndiObjectFactoryBean  dataSource(){
JndiObjectFactoryBean  jndiObjectFB = new  JndiObjectFactoryBean();
jndiObjectFB.setJndiName(“jdbc/SpittrDs”);
jndiObjectFB.setProxyInterface(javax.sql.DataSource.class);
return  jndiObjectFB;
}


(3)使用資料來源連線池

1、配置DBCPBasicDataSource的方式:
<bean  id=”dataSource”  class=”org.apache.commons.dbcp.BasicDataSource
  p:driverClassName=”org.h2.Driver”
  p:url = “jdbc:h2:tcp://localhost/~/spitter”
  p:username=”sa”
  p:password=””
  p:initialSize=”5”
  p:maxActive=”10”
” />
說明:
driverClassName:指定了JDBC驅動類的全限定類名
url:設定資料庫的JDBC的URL

其他配置資訊:

 

(4)基於JDBC驅動的資料來源

Spring中,通過JDBC驅動定義資料來源是最簡單的配置方式,提供了三個資料來源類:
DriverManagerDataSource:在每個連線請求中都會返回一個新的連線,沒有池化管理。
SimpleDriverDataSource:直接使用JDBC驅動,來解決在特定環境下的類載入問題,環境包括OSGi容器。
SingleConnectionDataSource:在每個連線請求時都會返回同一個的連線,視為只有一個連線的池。注意:綜上所述,應該使用資料來源連線池。


(5)使用嵌入式的資料來源(embedded  database)

作為應用的一部分執行,而不是應用連線的獨立資料庫伺服器。對於開發和測試,嵌入式資料庫是很好的可選方案,每次重啟應用或執行測試的時候,都能夠重新填充測試資料。
  <jdbc:embedded-database id="dataSource" type="H2">
    <jdbc:script location="classpath:spittr/db/jdbc/schema.sql" />
    <jdbc:script location="classpath:spittr/db/jdbc/test-data.sql" />
  </jdbc:embedded-database>
說明:
type:表明嵌入式資料庫應該是H2資料庫(確保H2位於應用的類路徑下)
<jdbc:script>:第一個引用了schema.sql包含了資料庫中建立表的SQL,第二個引用了test-data.sql,用來將測試資料填充到資料庫中
<jdbc:embedded-database>元素:暴露一個數據源,可以像使用其他的資料來源來使用它。

(6)使用profile選擇資料來源

需求:在某種環境下使用其中一種資料來源,在另外的環境中使用不同的資料來源。在專案開發測試生產需配置不同dataSourse時,可以採用spring的profile定義多個數據源
1.在Spring配置檔案中定義開發、測試環境和生產環境
<beans profile="test,develop">
    <!-- 開發和測試環境 -->
</beans>
<beans profile="product">
    <!-- 生產環境 -->
</beans>2.在web.xml中, 指定使用哪種環境
<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>test</param-value>
</context-param>
或者
<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>product</param-value>
    </init-param>
</servlet>
或者
-Dspring.profiles.active="profile1,profile2"