成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OSGi與Spring DM:使用Spring DataSource

原創
開發 后端
OSGi 規范為 Spring 應用程序的開發引入了模塊化和動態服務。Spring DM對于 OSGi 中的面向服務應用程序開發是一個非常棒的平臺。本文介紹Spring DataSource的使用。

【51CTO精選譯文】本文是《你好,OSGi》系列的第九部分。之前已經完成了使用Spring DM構建簡單應用并導入導出服務套件的過程,下面將介紹Spring DataSource的使用。顧名思義,Spring DataSource用于完成Spring應用程序與數據庫直接的聯絡。

51CTO編輯推薦:OSGi入門與實踐全攻略

使用 Spring DataSource

Spring框架的長處之一在于它為處理常見需求提供了一組預制的bean。在***這個小節中,我們將學習Spring DM如何允許用戶訪問基于OSGi應用程序中的這些預制bean。

在這個練習中,我們將修改 ContactDAO套件,使它連接到一個RDBMS,來與聯絡表互動。對于連接管理,我們將使用Spring DataSource (org.springframework.jdbc.datasource.DriverManagerDataSource) 類。請注意 Spring 的 DataSource 是 org.springframework.bundle.spring.jdbc 服務套件的一部分。在這個練習中,我使用 Apache Derby 來測試應用程序的代碼;你也可以使用你喜歡的數據庫。

該練習的***步是在你的數據庫中創建聯絡表。可以使用代碼清單 11 中的 DDL 腳本創建這個 CONTACT 表。

代碼清單 11. CONTACT 表的 DDL

  1. CREATE TABLE CONTACT(  
  2. CONTACTID int NOT NULL,  
  3. FIRSTNAME varchar(300),  
  4. LASTNAME varchar(300)  
  5. );  

對于連接管理,我們想使用 Spring 的 DriverManagerDataSource bean。問題在于, DriverManagerDataSource 類是 spring.jdbc 套件的一部分,而后者為了完成其工作需訪問你的 JDBC 驅動程序類。要解決該依賴性,最簡單的方法是將你的 JDBC 驅動程序 JAR 導入到 spring.jdbc 套件中。

***步,右鍵點擊 org.springframework.bundle.spring.jdbc 套件,然后點擊 New --> Folder。將該文件夾命名為“JARs folder”。

接著,右鍵點擊新創建的 JARs folder,然后點擊 Import --> General --> File System。在 From Directory 下,File System 對話框應顯示包含你的 JDBC 驅動程序 JAR 目錄的問題。對于我,該位置是 C:\software\db-derby-10.2.2.0-bin\lib。 選擇該位置,將在 Select 框中顯示 JAR 列表。選擇 derbyclient.jar(如果你使用的是 Derby)然后單擊完成。Eclipse 將 derbyclient.jar 導入到你的 JARs folder 中。

導入 JDBC 驅動程序 JAR 的***一步是將其添加到你的套件路徑中。為此,在 Plug-in Manifest Editor 編輯器中打開 org.springframework.bundle.spring.jdbc 套件的 MANIFEST.MF 文件。然后切換到 Runtimes 標簽欄并選擇 jars/derbyclient.jar,如圖 3 所示。

將 derbyclient.jar 添加到套件路徑 
圖 3. 將 derbyclient.jar 添加到套件路徑

(如果你喜歡,可以收到更新 bundle-classpath 條目至:Bundle-ClassPath: spring-jdbc-2.5.jar, jars/derbyclient.jar。)

現在,我們已經準備好了,可以通過將 JDBC 代碼修改 ContactDAOImpl 類的實現,用來與 CONTACT 表互動。如果你需要,可以從本文的示例代碼導入這個 ContactDAOImpl.java;或者只需使用如代碼清單 12 中所示的內容。

代碼清單 12. RDBMS 訪問的 ContactDAO 實現 - ContactDAOImpl.java

  1. public class ContactDAOImpl implements ContactDAO {  
  2. DataSource dataSource;  
  3. public DataSource getDataSource() {  
  4. return dataSource;  
  5. }  
  6. public void setDataSource(DataSource dataSource) {  
  7. this.dataSource = dataSource;  
  8. }  
  9. public List getContactList() {  
  10. List contactList = new ArrayList();  
  11. try {  
  12. Connection connection = dataSource.getConnection();  
  13. Statement stmt= connection.createStatement();  
  14. ResultSet rs =stmt.executeQuery("SELECT * FROM CONTACT");  
  15. while(rs.next()){  
  16. int contactId = rs.getInt("CONTACTID");  
  17. String firstName = rs.getString("FIRSTNAME");  
  18. String lastName = rs.getString("LASTNAME");  
  19. Contact contact = new Contact(contactId,firstName,lastName);  
  20. contactList.add(contact);  
  21. }  
  22. catch (SQLException e) {  
  23. e.printStackTrace();  
  24. }  
  25. return contactList;  
  26. }  
  27. //  
  28. }  
  29.  

你會注意到在代碼清單 12 中 ContactDAOImpl.java 有幾處修改:

首先,我們添加了作為 Java bean 屬性的 dataSource,包含相應的 getter 和 setter。Spring 將負責創建 DataSource 對象以及將其導入到 ContactDAOImpl。

getContactList() 方法從數據源(datasource)獲取連接,然后使用它來檢索 CONTACT 表中的所有聯絡記錄。請注意,代碼清單 12 是 ContactDAOImpl.java 的一部分代碼;完整的代碼請查看示例代碼。

ContactDAOImpl 已經準備就緒,我們要做的***一步是修改 ContactDAO 套件中的 contactdao-service.xm,代碼如代碼清單13 所示:

代碼清單 13. 更新 Spring 語境文件 - contactdao-service.xml

  1. < ?xml version="1.0" encoding="UTF-8"?> 
  2. < beans xmlns="http://www.springframework.org/schema/beans" 
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 
  5. < bean name="contactDAOService" 
  6. class="com.javaworld.sample.osgi.spring.contact.impl.ContactDAOImpl"> 
  7. < property name="dataSource" > 
  8. < ref bean="dataSource" /> 
  9. < /property> 
  10. < /bean> 
  11. < bean name="dataSource" 
  12. class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
  13. < property name="driverClassName" 
  14. value="org.apache.derby.jdbc.ClientDriver" /> 
  15. < property name="url" 
  16. value="jdbc:derby://localhost:1527/C:/derby_home/databases/ClientDB" /> 
  17. < property name="username" value="test" /> 
  18. < property name="password" value="test" /> 
  19. < /bean> 
  20. < /beans> 
  21.  

contactdao-service.xml 的修改如下:

◆我們聲明了一個 dataSource bean,指向org.springframework.jdbc.datasource.DriverManagerDataSource。這配置了 Spring,來負責應用程序的數據庫連接管理。(請確保在你的 bean 定義中使用你的數據庫專用的 JDBC 屬性。)

◆接著,我們修改 contactDAOService 的定義來添加對于 dataSource bean 的依賴性。

這樣,利用 Spring DM構建的 HelloWorld 服務應用程序已經準備好了。當在 Equinox 容器中執行該應用程序時,它將在應用程序啟動時在控制臺上輸出聯絡列表。

總結

OSGi 規范為 Spring 應用程序的開發引入了模塊化和動態服務。對于已經熟悉 Spring 編程和配置的開發者,Spring DM代表了一種更為簡易的入口,可以學習 OSGi 的動態、模塊化的開發規范,而無需學習 OSGi API。正如你在本文中所看到的,Spring DM對于 OSGi 中的面向服務應用程序開發是一個非常棒的平臺。在一個正在運行的系統中,使用 Spring DM編寫的應用程序模塊能夠動態地進行添加、移除和更新,而且你還可以同時部署指定模塊的多個版本。

【編輯推薦】

  1. 你好,OSGi!OSGi入門必讀系列
  2. 使用OSGi構建面向服務的聯絡管理應用程序
  3. OSGi與Spring:設置Spring DM開發環境
  4. OSGi和Spring入門:什么是Spring動態模型(Spring DM)?
  5. OSGi是什么:Java語言的動態模塊系統
責任編輯:yangsai 來源: 51CTO.com
相關推薦

2009-09-28 13:13:16

設置Spring DM

2009-09-27 09:29:56

OSGi和SpringSpring動態模型Spring DM

2009-09-28 14:49:08

Spring DMOSGi服務

2009-06-01 10:28:03

SpringOSGi整合

2009-06-18 15:24:08

Spring OSGi

2009-07-09 09:18:50

Spring Tool

2009-03-03 10:06:00

IBMJavaOSGi

2009-06-18 15:14:53

Spring osgi

2009-10-29 09:52:55

OSGi

2009-06-01 10:40:26

SpringOSGI中文手冊

2010-04-07 08:55:00

OSGiSpring

2009-06-25 15:33:48

OSGi方式

2009-06-23 17:54:41

OSGi與JSF

2023-09-04 11:52:53

SpringMVC性能

2010-05-28 09:22:06

dm ServerSpringEclipse

2009-09-28 13:32:39

OSGi入門

2009-06-25 17:13:51

jBPM與Spring

2010-05-20 13:19:35

GoogleSpringVMware

2009-06-17 15:18:38

JSF與Spring

2009-07-14 14:41:33

Webwork與Spr
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线免费激情视频 | 亚洲视频免费观看 | 国产成人精品免高潮在线观看 | av黄在线观看 | 一区二区在线免费观看视频 | 国产999精品久久久久久 | 91se在线| 国产亚洲网站 | 一二三四在线视频观看社区 | 欧美色性| 国产高清免费 | 99精品一区二区三区 | 天堂资源视频 | 日日夜夜免费精品视频 | 爱爱视频在线观看 | 免费在线观看成年人视频 | 成人二区 | 国产第一页在线播放 | 男女网站免费观看 | 91久久精品日日躁夜夜躁国产 | 91精品久久久 | 亚洲国产精品久久久久秋霞不卡 | 91av视频 | 国产精品久久久久久婷婷天堂 | 久久久久久久久久久久久9999 | 亚洲精品自在在线观看 | 欧美极品在线播放 | 欧美久久一区二区 | 国产精品视频久久 | 国产午夜视频 | 欧美日韩亚洲一区 | 国产激情网站 | 美女在线视频一区二区三区 | 亚洲国产一区视频 | 国产精品一区网站 | 成av人电影在线 | 久久精品一级 | 欧美啪啪网站 | 免费国产一区二区 | 午夜久草 | 国产精品免费观看 |