開源框架: Spring Gossip

開源框架: Spring Gossip

Spring  是由 Rod Johnson 撰寫,並在其著作 Expert One-on-One: J2EE Design and Development 中有提到過,它是個輕量級(Lightweight)容器(Container)、實現 IoC(Inversion of Control)、AOP(Aspect-oriented programming)概念,是一個全方位的應用程式(Application)框架(Framework),可協助建立以往在 EJB 下才有可能建立的一些應用程式。
這邊的文件將以我之前曾寫過的 文件 為基礎,並在 Spring 1.2.5 的基礎上撰寫範例以作重新整理的動作。

認識 Spring
        來認識 Spring 的一些特性,並初步了解一下什麼叫作 IoC?什麼叫作 DI?
核心容器
        Spring 核心容器實作了 IoC,BeanFactory 與 ApplicationContext 的運用是了解 Spring 的重點所在。
  • 管理 Bean 
從第一個Spring 應用程式開始,逐步了解何謂依賴注入,以及如何使用 Spring 的容器功能來管理 Bean,了解 Bean 在 Spring 容器中的生命週期。
  • Bean 進階管理
理想上對於 Bean 來說,它不需要意識到 Spring 容器的存在,然而有時候 Bean 仍必須知道有關於 Spring 容器或自己的一些訊息,而另一方面,您可能必須讓容器對 Bean 進行一些額外處理。
  • 訊息與事件
ApplicationContext 除了具備如 BeanFactory 基本的容器管理功能之外,並支援更多應用程式框架的特性,像是資源的取得、訊息解析、事件的處理與傳播。

AOP(Aspect-Oriented Programming)
        在一個服務的流程中插入與服務無關的邏輯(例如Logging、Security),這樣的邏輯稱為 Cross-cutting concerns,將 Crossing-cutting concerns 獨立出來為一個物件,這樣的特殊物件稱之為 Aspect,Aspect-oriented programming 著重在 Aspect 的設計及與應用程式的縫合(Weave)。
  • AOP 入門
AOP 的觀念與術語都不是很直覺,可以先從代理機制(Spring 實現 AOP 的一種方式)來看看實際的例子,從而了解 AOP 的觀念與各種術語。
  • Advices
Advices 包括了Aspect 的真正邏輯,由於縫合至Targets的時機不同,Spring 提供了幾種不同的 Advices。
  • Pointcut、Advisor
Pointcut 定義了 Advice 的應用時機,在 Spring 中,使用 PointcutAdvisor 將 Pointcut 與 Advice 結合成為一個物件,Spring 中大部分內建的 Pointcut 都有對應的 PointcutAdvisor。
  • Introduction
為特殊的 Advice,它影響的不是方法的流程,而是影響整個物件的行為,為物件動態 mixin 職責。
  • Autoproxing
自動代理可以讓您不用為每一個要被 Advised 的 Target 手動定義代理物件,透過 Bean 名稱或是 Pointcut 的比對,自動為符合的 Target 建立代理物件。

持久層
        來看看 Spring 的 IoC 容器與 AOP 框架如何應用於持久層,包括了資料庫、交易等相關議題。
  • 資料庫存取
Spring 提供了 DAO 框架,讓應用程式開發時無須耦合於特定資料庫技術。
  • JDBC 支援
Spring 在 JDBC 的使用上提供了幾個類別,讓您可以簡化 JDBC 在使用時的流程。
  • 交易管理
Spring 提供編程式的交易管理(Programmatic transaction management)與宣告式的交易管理(Declarative transaction management),為不同的交易實作提供了一致的編程模型。
  • Hibernate 支援
Spring 整合了對 Hibernate 的設定,並提供有 HibernateTemplate 等類別,讓您在結合 Hibernate 時可以簡化使用上的流程。
Web 層
        Spring 提供了 MVC Web 框架,您可以善用 IoC 容器在依賴注入上的好處,另一方面,Spring 也致力於與其它的 Web 框架的整合。
  • Spring MVC 入門
從一個最簡單的 Spring Web 應用程式,來看看 Spring  MVC 框架的架構與 API 組成元素。
  • 使用 Controller 相關類別
與其它 Web 框架的 Action 物件不同的是,Spring 提供了豐富的 Controller 相關類別,讓您可以依需求來製作自己所需的 Controller 物件。
  • 搭配 Controller 的類別
介紹如何在 Controller上搭配使用驗證器(Validator)、如何實作Command資料的型態轉換,以及如何使用Spring的相關API來實作檔案 上傳的功能。

View層方案、Web框架整合
        當使用JSP作為View層技術時,您可以結合JSTL以及Spring提供的標籤,而除了JSP技術作為View層之外,Spring還提供了不同 View層技術的解決方案,您甚至可以定義自己的View層技術實現。
  • JSP View 層
當使用 JSP 作為 View 層技術時,您可以結合 JSTL 以及 Spring 提供的標籤。
  • 其它 View 層
除了 JSP View 層技術之外,您還可以使用其它的 View 層技術,或建立自己的 View Class。
  • 與其它 Web 框架的整合
您可以將 Spring 與現在的一些 Web 框架結合在一起,重點都在於如何讓 Web 框架意識到 Spring 的存在。

其它
        Spring 提供了簡化且一致的方式,讓您在使用一些 API 或服務時更加簡單。
  • 遠程(Remoting)
Spring 提供了一致的使用方式,即使所採用的遠程服務技術不儘相同,在 Spring 中運用它們的方式卻是一致的。
  • Java Message Service
Spring 使用 JmsTemplate 簡化了 JMS 的開發過程。
  • 郵件
對於郵件發送服務的支援是由Spring的 org.springframework.mail.MailSender介面所定義,它有兩個實作類別, org.springframework.mail.cos.CosMailSenderImpl與 org.springframework.mail.javamail.JavaMailSenderImpl。
  • 排程
Spring則對 java.util.Timer提供了抽象封裝,讓您可以善用Spring的容器管理功能,而Spring對Quartz進行了封裝,讓它在使用上更加方 便。


參考資料