首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

OSGi 與 Spring 入門:什麼是 Spring 動態模組?

     編輯:J2EE

本文為《你好,OSGi》系列第五部分,正式開啟 Spring 動態模組篇章。探討為何 Spring DM 對熟悉 Spring 配置、需挖掘 OSGi 模組化、版本控制與應用生命週期支援的開發者極具吸引力。

使用 OSGi 與 Spring 構建面向服務應用

OSGi(Java 動態模組系統)為 Java 應用開發定義模組化方法與標準化模組管理相依性。OSGi 服務平台的 Spring 動態模組專案允許開發者構建可部署於 OSGi 容器的 Spring 應用。對熟悉 Spring 的 Java 企業開發者,Spring DM 是學習 OSGi 模組化開發的捷徑,除提供模組化架構與動態配置外,還處理大部分 OSGi 底層編程,讓開發者專注業務邏輯。

系列回顧與本節目標

第一節介紹標準 OSGi 開發方式(OSGi API + Equinox),涵蓋架構、容器、Bundle 概念並開發首個 OSGi Hello World。本節將再次建構 Hello World,改用 Spring DM 框架,學習:

  • Spring DM 如何分離應用邏輯與模組邊界的執行時強制
  • 運行系統中動態安裝、升級、卸載模組
  • 動態發現使用其他模組服務構建 SOA 應用
  • 使用 Spring DataSource 實例化、配置、組裝跨模組組件

Spring DM 免除繁瑣機械工作與理解 OSGi 框架底層運作的困難,加速應用邏輯深耕。

OSGi 與 Spring 框架產業趨勢

OSGi 熱度急升:IBM WebSphere、BEA microService Architecture (mSA)、JOnAS 5 等應用伺服器已採用 OSGi 模組化框架。JBoss 開發基於 OSGi 的類載入器並計劃實作核心規範。Eclipse 基金會 Equinox 升級為頂級專案,成為新 Eclipse Runtime Initiative 基石。

OSGi 與 Spring 結合討論由來已久,催生 Spring Dynamic Modules for OSGi Service Platforms 專案。Spring DM 兩大核心功能:

  1. 以 OSGi Bundle 形式提供 Spring 框架 JAR(Bundle = JAR + META-INF/MANIFEST.MF 部署描述元)
  2. 提供三個 OSGi 專用 Spring Bundle:
    • org.springframework.osgi.bundle.extender
    • org.springframework.osgi.bundle.core
    • org.springframework.osgi.bundle.io

Spring DM 運作機制

傳統 Spring 應用:XML 配置檔定義資訊,啟動時建立應用程式語境對象實例化配置組裝物件。

Spring DM:啟動時 org.springframework.osgi.bundle.extender 掃描所有 Resolved 狀態 Bundle,判斷是否為 Spring 提供(含 Spring-Context Manifest 標頭或 META-INF/spring 下 XML)。發現則載入配置建立應用程式語境,檢查是否導出 OSGi 服務(將 Spring Bean 發布至共享服務登記處)、導入 OSGi 服務(尋找服務加入應用程式語境為普通 Spring Bean)。並註冊 Bundle 事件監聽器,新進入 Resolved 狀態的 Bundle 同樣處理。

下篇將從環境建置開始開發首個 Spring DM 應用,敬請期待!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved