第二章 相關觀念與技術背景
2.2 Spring 與 MVC
Spring Framework19是一套由 Java 所開發的框架,提供一完整的程式架構,讓程 式員能專注於其應用程式的開發。使用 Spring Framework 可以將散佈在系統上的 程式元件,正規化地彙整到一個可以立即上線使用的容器。不但如此,他也將很 多已標準化的設計模式,納入其框架的設計中,也就是說使用 Spring Framework,
除了可以使用他自身所提供功能外,同時也可以享受使用設計模式對系統開發/
維護所帶來的好處。Spring Framework 包含了 20 個主要的模組,依其性質及功 能可以分成五大類,分別為 Core Container,Data Access/Integration,Web,
AOP(Aspect Oriented Programming)與 Instrumentation 以及 Test。 (Spring 開發團 隊)
1、Core Container:包括了 Core and Beans、Context、Expression Language 模組,
為 Spring Framework 的核心模組。
2、Data Access/Integration:提供了一系列從 JDBC20、ORM21、JMS22到 Transaction 與資料存取相關的模組。
3、Web:包含了 Web,Web-Servlet,Web-Struts 及 Web-Portlet 等與網路應用程式 相關的模組。
4、AOP 與 Instrumentation:實作符合 AOP Alliance 規範的剖面導向程式設計 (Aspect-oriented programming)23,允許使用者自行定義 method-interceptors 與 pointcuts,同時也支援 class instrumentation 及 classloader 實作。
19 http://projects.spring.io/spring-framework/
20 JDBC(Java Data Base Connectivity)是一種用於執行資料庫查詢語言(Structured Query Language,
SQL)的 Java API。
21 物件關聯對映(Object Relational Mapping, ORM),是一種程式設計技術,用於實現物件導向 編程語言裡,不同類型系統資料之間的轉換。
22 Java 訊息服務(Java Message Service,JMS)是一個 Java 帄台中的 API,用於在兩個應用程序 之間,或於分散式系統中發送訊息進行非同步通訊。
23剖面導向程式設計(Aspect-oriented programming,AOP)是一種程式設計模式。該模式以一種 稱為剖面(aspect)的語言構造為基礎,用來描述分散在物件、類或函式中的橫切關注點
(crosscutting concern)。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
11
5、Test:測詴模組支援使用 JUnit24或 TestNG25來對 Spring 元件進行測詴。
本帄台所使用的核心框架為 Spring,所有的主要邏輯均化身為 Java Bean 的型 式,由 Spring 內建的容器加以管控,在網頁端程式的開發,我們使用設計模式中 的 MVC 模式,並導入 Spring Web MVC 模組,提升前端網頁程式的開發效率及後 續程式的維護品質。圖 2. 3 Spring 框架概觀。
圖 2. 3 Spring 框架概觀。(引用自 Spring 官方網站)
本帄台以二分法來區分,可以分為與使用者互動的網頁應用程式以及專責於 伺服器端執行的推特搜集程式,在網頁應用程式我們是採用 MVC 的架構,並使 用 Spring Web MVC 模組來實現。
Spring Web MVC 模組實作設計模式中的 MVC 模式,他的核心設計原理,主
24 JUnit 是一個 Java 語言的單元測詴框架。
25 TestNG 是一個從 JUnit 與 NUnit 衍生出來的單元測詴框架。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
12
要是環繞在能夠將使用者的請求,分派給不同控制器的 Servlet26上(在 Spring Web MVC 中稱為 Dispatcher Servlet),Spring 強大的數據綁定(Data binding)、注解 (Annotation)、視圖解析(View resolution)以及可高度參數化的組態設定,可以很 快速的設計出 MVC 架構。在 Spring Web MVC 的架構下可以有很多種不同的型式 來實作【控制器】,從 XML 組態檔的設定,程式碼內設定到方便 Java 注解等,均 可以很彈性地任由程式員選擇;而【模型】與【視圖】在 Spring Web MVC 下主 要是以 ModelAndView 這個實體(Instance)來表示,其中包含了【視圖】的名稱以 及以 Map 型態存在的【模型】,可以很方便的整合到 JSP 頁面裡。圖 2. 4 Spring Web MVC 架構,前端使用者的請求進來會先經過 Dispacther Servlet 處理,再來依據 HandlerMapping 的對照表,找出負責處理該請求的控制器,控制器負責取得要展 現給前端使用者的【模型】,最後將從【模型】取得的資料,由【視圖】產生 HTML、
Javascript、CSS 等內容,呈現在終端使用者的瀏覽器裡。
圖 2. 4 Spring Web MVC 架構。(引用自
http://krishnasblog.com/2013/02/22/junit-testing-of-spring-mvc-application-introduction/)
26 Servlet(Server Applet),全稱 Java Servlet,是用 Java 編寫的伺服器端程序。