Spring 4.1.6(一)
阿新 • • 發佈:2019-01-24
大概瞭解Spring
Spring 框架是輕量級的一站式的企業應用開發框架,Spring 是多模組的,它允許你使用你需要的模組。
introduce Spring
Spring 是基於Java 平臺,它提供綜合基本條件去構建Java應用。
使用Spring 的優勢
- 使Java方法在資料庫事務中執行,而不必處理事務API。
- 使本地Java方法成為遠端過程,而無需處理遠端API。
- 使本地Java方法成為管理操作,而無需處理JMX API。
- 使本地Java方法成為訊息處理程式,而無需處理JMS API。
依賴注入和控制反轉
依賴:不是自己本身的,但是又是我需要的。
public class Test1 { private Test2 test2; public Test1() { test2 = new Test2(); } }
Test1 對Test2 依賴,我們可以看出在每次構造Test1 的時候,都要構造Test2,即把Test2 寫死在Test1的建構函式中,假如,這時我需要其他的怎麼怎麼辦?
public class Test1 {
private Test2 test2;
public Test1(Test2 t) {
this.test2 = t;
}
}
因為大多數應用程式都是由兩個或者更多的類通過彼此合作來實現業務邏輯,這使得每個物件都需要獲取與其合作的物件(也就是它所依賴的物件)的引用。如果這個獲取過程要靠自身實現,那麼將導致程式碼高度耦合並且難以維護和除錯。所以就有了依賴注入。
基於上面的依賴,還是靠自己手動注入,於是便有了控制反轉,幫助我們更方便實現依賴注入。
通過控制反轉,物件在被建立的時候,由一個調控系統內所有物件的外界實體,將其所依賴的物件的引用傳遞給它。也可以說,依賴被注入到物件中。
這是所有的依賴物件,都將存放在控制反轉的容器,在該容器通過反射,去返回相應的依賴物件,總的來說,依賴注入是控制反轉的一種實現。
依賴注入最大的收益:就是在於鬆耦合,如果依賴的物件只通過介面來指名依賴關係,那麼這種依賴在物件毫不知情的情況下,可以使用不同的具體實現來替代。
Spring 模組
- The Core and Beans模組,提供了依賴注入、控制反轉的特性,用來涉及到BeanFactory 。
- Context模組構建在Core和Beans模組提供的堅實基礎之上:它是一種以類似於JNDI登錄檔的框架樣式方式訪問物件的方法。 Context模組從Beans模組繼承其功能,並新增對國際化(例如,使用資源包),事件傳播,資源載入以及通過例如servlet容器透明建立上下文的支援。 Context模組還支援Java EE功能,例如EJB,JMX和基本遠端處理。ApplicationContext介面是Context模組主要使用的。
- Expression Language模組提供了一種強大的表示式語言, 它是JSP 2.1規範中指定的統一表達式語言(統一EL)的擴充套件。 該語言支援設定和獲取屬性值,屬性賦值,方法呼叫,訪問陣列,集合和索引器的上下文,邏輯和算術運算子,命名變數以及從Spring的IoC容器中按名稱檢索物件。
- JDBC模組提供了一個JDBC抽象層,無需進行繁瑣的JDBC編碼和解析資料庫供應商特定的錯誤程式碼。
- ORM模組為流行的物件關係對映API提供整合層,包括JPA,JDO,Hibernate和iBatis。使用ORM包,您可以將所有這些O / R對映框架與Spring提供的所有其他功能結合使用。
- OXM模組提供了一個抽象層,支援JAXB,Castor,XMLBeans,JiBX和XStream的Object / XML對映實現。
- Java訊息傳遞服務(JMS)模組包含用於生成和使用訊息的功能。
- Transaction模組支援對實現特殊介面的類和所有POJO(普通舊Java物件)的類進行程式設計和宣告式事務管理。
- Web-Servlet模組包含用於Web應用程式的Spring的模型 - 檢視 - 控制器(MVC)實現。 Spring的MVC框架提供了域模型程式碼和Web表單之間的清晰分離,並與Spring Framework的所有其他功能整合在一起。
- Web-Struts模組包含用於在Spring應用程式中整合經典Struts Web層的支援類。 請注意,從Spring 3.0開始,此支援現已棄用。 考慮將您的應用程式遷移到Struts 2.0及其Spring整合或Spring MVC解決方案。
- Web-Portlet模組提供了在portlet環境中使用的MVC實現,並映象了Web-Servlet模組的功能。
- Spring 的Aop 模組,實現了面向切面式程式設計,利用方法攔截器和切入點,可以輕鬆實現和原始碼分離。
- Test 模組,主要整合包括Junit,去測試Spring 元件。
Tip JavBean vs POJO
JavaBean 有嚴格約定,實現實現序列化的介面,提供set、get方法,提供預設的構造器。
POJO(plain-old-Java-object),沒有JavaBean 約定嚴格,它就是一個簡單的Java 物件。
參考學習