【51CTO精選譯文】本文是《你好,OSGi》系列的第七部分。現在讀者們多半已經了解了何謂Spring DM,它和OSGi的關系,以及Spring DM開發環境的設置,那麼下面將要開始進行應用程序的開發了。
51CTO編輯推薦:OSGi入門與實踐全攻略
歡迎來到 Spring 世界!
在這一部分,我們將使用 Spring DM來創建一個簡單的 Hello World 應用程序。這個非常簡單的應用程序將在啟動時在你的控制台上輸出“Hello Spring World!!”,並且在關閉時輸出“Goodbye Spring World!!”。第一步是創建一個簡單的 HelloWorld.Java 類,請參見以下代碼:
代碼清單1. HelloWorld.Java
- package com.Javaworld.osgi.spring;
- public class HelloWorld {
- public void start() throws Exception {
- System.out.println("Hello Spring World!! " );
- }
- public void stop() throws Exception {
- System.out.println("Goodbye Spring World!!");
- }
- }
正如你所見,HelloWorld.Java 是一個簡單的類,它沒有實施任何借口或者擴展任何超類(superclass)。它包含兩個方法:start() 和 stop()。在應用程序啟動時調用 start() 方法;關閉時調用stop()方法。
下一步是在 META-INF/spring 文件夾中創建一個helloworld.XML 文件:
代碼清單 2. helloworld.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="hello" class="com.Javaworld.osgi.spring.HelloWorld"
- init-method="start" destroy-method="stop" />
- < /beans>
在該文件中,只聲明了一個名為hello 的 bean,指向com.Javaworld.osgi.spring.HelloWorld 類。該 bean 的 init-method 值為 start。destroy-method 屬性的值為stop。
當將你的應用程序zuowei Eclipse OSGi 應用程序執行時,應可以在你的控制台上看到“Hello Spring World!!”這條消息。怎麼會這麼簡單?是對,當你創建 META-INF/spring 文件夾並保護你的 helloworld.XML 文件時,已經對其進行了設置。
當 extender 套件啟動時,它會發現你的 HelloWorld 套件是由 Spring 提供的。hello bean 已經將 start() 定義為它的初始化方法,因此 Spring 框架將調用 HelloWorld 類的 start() 方法。同樣,當你關閉 HelloWorld 套件時,Spring 框架將調用 HelloWorld.Java 的 stop() 方法。
Spring DM中面向服務的應用程序
OSGi 在面向服務應用程序開發方面的適用性是其最讓人關注的功能之一。OSGi服務平台運行 OSGi服務構建的、面向服務的應用程序。這一服務只是一個簡單的Java 對象,在一個或多個接口名稱下發布。OSGi 服務平台的構思是一個源(source)套件在一個公共的寄存器導出服務。然後消費者(consumer)搜索實施了某一特定接口的服務;一旦找到就將其與該服務綁定並使用它。
在構建復雜的企業應用程序時,OSGi服務平台非常有用。例如,假設我們要創建一個 Web 應用程序,那麼在 OSGi 實施中,你可以將該應用程序分為兩個套件。數據訪問套件可與數據庫互動並將數據訪問服務導出至一個公共寄存器。Web 層套件將導入數據訪問服務並使用它們將數據顯示給終端用戶。
這種基於模塊化架構進行應用程序創建的設計讓數據訪問服務的更新變得非常容易。比如,要從一個較慢的服務更新到一個較快的服務,你可以創建一個不同的數據訪問服務,來和 Web 服務實現進行會話,然後將 RDMBS 服務替換為這一新的服務,而且無需重啟你的應用程序。
在下一個部分我們將構建一個面向服務的聯絡管理應用程序。該應用程序將演示 Spring bean 如何能夠被導出為 OSGi服務,以及 OSGi服務如何導出為 Spring bean。