新聞中心
【精選譯文】本文是《你好,OSGi》系列的第九部分。之前已經(jīng)完成了使用Spring DM構(gòu)建簡單應用并導入導出服務套件的過程,下面將介紹Spring DataSource的使用。顧名思義,Spring DataSource用于完成Spring應用程序與數(shù)據(jù)庫直接的聯(lián)絡。

為平房等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務,及平房網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務為網(wǎng)站設(shè)計、成都做網(wǎng)站、平房網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
編輯推薦:OSGi入門與實踐全攻略
使用 Spring DataSource
Spring框架的長處之一在于它為處理常見需求提供了一組預制的bean。在***這個小節(jié)中,我們將學習Spring DM如何允許用戶訪問基于OSGi應用程序中的這些預制bean。
在這個練習中,我們將修改 ContactDAO套件,使它連接到一個RDBMS,來與聯(lián)絡表互動。對于連接管理,我們將使用Spring DataSource (org.springframework.jdbc.datasource.DriverManagerDataSource) 類。請注意 Spring 的 DataSource 是 org.springframework.bundle.spring.jdbc 服務套件的一部分。在這個練習中,我使用 Apache Derby 來測試應用程序的代碼;你也可以使用你喜歡的數(shù)據(jù)庫。
該練習的***步是在你的數(shù)據(jù)庫中創(chuàng)建聯(lián)絡表。可以使用代碼清單 11 中的 DDL 腳本創(chuàng)建這個 CONTACT 表。
代碼清單 11. CONTACT 表的 DDL
- CREATE TABLE CONTACT(
- CONTACTID int NOT NULL,
- FIRSTNAME varchar(300),
- LASTNAME varchar(300)
- );
對于連接管理,我們想使用 Spring 的 DriverManagerDataSource bean。問題在于, DriverManagerDataSource 類是 spring.jdbc 套件的一部分,而后者為了完成其工作需訪問你的 JDBC 驅(qū)動程序類。要解決該依賴性,最簡單的方法是將你的 JDBC 驅(qū)動程序 JAR 導入到 spring.jdbc 套件中。
***步,右鍵點擊 org.springframework.bundle.spring.jdbc 套件,然后點擊 New --> Folder。將該文件夾命名為“JARs folder”。
接著,右鍵點擊新創(chuàng)建的 JARs folder,然后點擊 Import --> General --> File System。在 From Directory 下,F(xiàn)ile System 對話框應顯示包含你的 JDBC 驅(qū)動程序 JAR 目錄的問題。對于我,該位置是 C:\software\db-derby-10.2.2.0-bin\lib。 選擇該位置,將在 Select 框中顯示 JAR 列表。選擇 derbyclient.jar(如果你使用的是 Derby)然后單擊完成。Eclipse 將 derbyclient.jar 導入到你的 JARs folder 中。
導入 JDBC 驅(qū)動程序 JAR 的***一步是將其添加到你的套件路徑中。為此,在 Plug-in Manifest Editor 編輯器中打開 org.springframework.bundle.spring.jdbc 套件的 MANIFEST.MF 文件。然后切換到 Runtimes 標簽欄并選擇 jars/derbyclient.jar,如圖 3 所示。
圖 3. 將 derbyclient.jar 添加到套件路徑
(如果你喜歡,可以收到更新 bundle-classpath 條目至:Bundle-ClassPath: spring-jdbc-2.5.jar, jars/derbyclient.jar。)
現(xiàn)在,我們已經(jīng)準備好了,可以通過將 JDBC 代碼修改 ContactDAOImpl 類的實現(xiàn),用來與 CONTACT 表互動。如果你需要,可以從本文的示例代碼導入這個 ContactDAOImpl.java;或者只需使用如代碼清單 12 中所示的內(nèi)容。
代碼清單 12. RDBMS 訪問的 ContactDAO 實現(xiàn) - ContactDAOImpl.java
- public class ContactDAOImpl implements ContactDAO {
- DataSource dataSource;
- public DataSource getDataSource() {
- return dataSource;
- }
- public void setDataSource(DataSource dataSource) {
- this.dataSource = dataSource;
- }
- public List getContactList() {
- List contactList = new ArrayList();
- try {
- Connection connection = dataSource.getConnection();
- Statement stmt= connection.createStatement();
- ResultSet rs =stmt.executeQuery("SELECT * FROM CONTACT");
- while(rs.next()){
- int contactId = rs.getInt("CONTACTID");
- String firstName = rs.getString("FIRSTNAME");
- String lastName = rs.getString("LASTNAME");
- Contact contact = new Contact(contactId,firstName,lastName);
- contactList.add(contact);
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return contactList;
- }
- //
- }
你會注意到在代碼清單 12 中 ContactDAOImpl.java 有幾處修改:
首先,我們添加了作為 Java bean 屬性的 dataSource,包含相應的 getter 和 setter。Spring 將負責創(chuàng)建 DataSource 對象以及將其導入到 ContactDAOImpl。
getContactList() 方法從數(shù)據(jù)源(datasource)獲取連接,然后使用它來檢索 CONTACT 表中的所有聯(lián)絡記錄。請注意,代碼清單 12 是 ContactDAOImpl.java 的一部分代碼;完整的代碼請查看示例代碼。
ContactDAOImpl 已經(jīng)準備就緒,我們要做的***一步是修改 ContactDAO 套件中的 contactdao-service.xm,代碼如代碼清單13 所示:
代碼清單 13. 更新 Spring 語境文件 - contactdao-service.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">
- < bean name="contactDAOService"
- class="com.javaworld.sample.osgi.spring.contact.impl.ContactDAOImpl">
- < property name="dataSource" >
- < ref bean="dataSource" />
- < /property>
- < /bean>
- < bean name="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- < property name="driverClassName"
- value="org.apache.derby.jdbc.ClientDriver" />
- < property name="url"
- value="jdbc:derby://localhost:1527/C:/derby_home/databases/ClientDB" />
- < property name="username" value="test" />
- < property name="password" value="test" />
- < /bean>
- < /beans>
contactdao-service.xml 的修改如下:
◆我們聲明了一個 dataSource bean,指向org.springframework.jdbc.datasource.DriverManagerDataSource。這配置了 Spring,來負責應用程序的數(shù)據(jù)庫連接管理。(請確保在你的 bean 定義中使用你的數(shù)據(jù)庫專用的 JDBC 屬性。)
◆接著,我們修改 contactDAOService 的定義來添加對于 dataSource bean 的依賴性。
這樣,利用 Spring DM構(gòu)建的 HelloWorld 服務應用程序已經(jīng)準備好了。當在 Equinox 容器中執(zhí)行該應用程序時,它將在應用程序啟動時在控制臺上輸出聯(lián)絡列表。
總結(jié)
OSGi 規(guī)范為 Spring 應用程序的開發(fā)引入了模塊化和動態(tài)服務。對于已經(jīng)熟悉 Spring 編程和配置的開發(fā)者,Spring DM代表了一種更為簡易的入口,可以學習 OSGi 的動態(tài)、模塊化的開發(fā)規(guī)范,而無需學習 OSGi API。正如你在本文中所看到的,Spring DM對于 OSGi 中的面向服務應用程序開發(fā)是一個非常棒的平臺。在一個正在運行的系統(tǒng)中,使用 Spring DM編寫的應用程序模塊能夠動態(tài)地進行添加、移除和更新,而且你還可以同時部署指定模塊的多個版本。
【編輯推薦】
- 你好,OSGi!OSGi入門必讀系列
- 使用OSGi構(gòu)建面向服務的聯(lián)絡管理應用程序
- OSGi與Spring:設(shè)置Spring DM開發(fā)環(huán)境
- OSGi和Spring入門:什么是Spring動態(tài)模型(Spring DM)?
- OSGi是什么:Java語言的動態(tài)模塊系統(tǒng)
文章題目:OSGi與SpringDM:使用SpringDataSource
本文來源:http://www.5511xx.com/article/dphdgds.html


咨詢
建站咨詢
