1、什麼是Spring架構?Spring架構有哪些主要子產品?
Spring 架構是一個為 Java 應用程式的開發提供了綜合、廣泛的基礎性支援的 Java 平台。
Spring 幫助開發者解決了開發中基礎性的問題,使得開發人員可以專注于應用程式的開發。
Spring 架構本身亦是按照設計模式精心打造,這使得我們可以在開發環境中安心的內建 Spring 框
架,不必擔心 Spring 是如何在背景進行工作的。
Spring 架構至今已內建了 20 多個子產品。這些子產品主要被分如下圖所示的核心容器、資料通路/集
成,、Web、AOP(面向切面程式設計)、工具、消息和測試子產品。
2、使用Spring 架構能帶來哪些好處?
下面列舉了一些使用 Spring 架構帶來的主要好處:
- Dependency Injection(DI) 方法使得構造器和 JavaBean properties 檔案中的依賴關系一
目了然。
- 與 EJB 容器相比較,IoC 容器更加趨向于輕量級。這樣一來 IoC 容器在有限的記憶體和 CPU 資
源的情況下進行應用程式的開發和釋出就變得十分有利。
- Spring 并沒有閉門造車,Spring 利用了已有的技術比如 ORM 架構、logging 架構、J2EE、Q
uartz 和 JDK Timer,以及其他視圖技術。
- Spring 架構是按照子產品的形式來組織的。由包和類的編号就可以看出其所屬的子產品,開發者僅
僅需要選用他們需要的子產品即可。
- 要測試一項用 Spring 開發的應用程式十分簡單,因為測試相關的環境代碼都已經囊括在架構中
了。更加簡單的是,利用 JavaBean 形式的 POJO 類,可以很友善的利用依賴注入來寫入測試
資料。
- Spring 的 Web 架構亦是一個精心設計的 Web MVC 架構,為開發者們在 web 架構的選擇上
提供了一個除了主流架構比如 Struts、過度設計的、不流行 web 架構的以外的有力選項。
- Spring 提供了一個便捷的事務管理接口,适用于小型的本地事物處理(比如在單 DB 的環境
下)和複雜的共同僚物處理(比如利用 JTA 的複雜 DB 環境)。
3、什麼是控制反轉(IOC)?什麼是依賴注入?
控制反轉是應用于軟體工程領域中的,在運作時被裝配器對象來綁定耦合對象的一種程式設計技巧,對
象之間耦合關系在編譯時通常是未知的。在傳統的程式設計方式中,業 務邏輯的流程是由應用程式中的
早已被設定好關聯關系的對象來決定的。在使用控制反轉的情況下,業務邏輯的流程是由對象關系圖
來決定的,該對象關系圖由裝配 器負責執行個體化,這種實作方式還可以将對象之間的關聯關系的定
義抽象化。而綁定的過程是通過“依賴注入”實作的。
控制反轉是一種以給予應用程式中目标元件更多控制為目的設計範式,并在我們的實際工作中起到
了有效的作用。
依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,将其他對象所依賴的功能對象
執行個體化的模式。這就需要一種機制用來激活相應的元件以提供特定的功能,是以依賴注入是控制反
轉的基礎。否則如果在元件不受架構控制的情況下,架構又怎麼知道要建立哪個元件?
在 Java 中依然注入有以下三種實作方式:
\1. 構造器注入
\2. Setter 方法注入
\3. 接口注入
4、請解釋下Spring架構中的 IoC?
Spring 中的 org.springframework.beans 包和 org.springframework.context 包
構成了 Spring 架構 IoC 容器的基礎。
BeanFactory 接口提供了一個先進的配置機制,使得任何類型的對象的配置成為可能。
ApplicationContex 接口對 BeanFactory(是一個子接口)進行了擴充,在 BeanFactory
的基礎上添加了其他功能,比如與 Spring 的 AOP 更容易內建,也提供了處理 message resource
的機制(用于國際化)、事件傳播以及應用層的特别配置,比如針對 Web 應用的
WebApplicationContext。