2016-06-22 111 views
4

我在web應用程序(使用JSP/Servets)方面有一些經驗;核心Java。我也有一些開發Spring MVC框架的經驗。Spring Framework和Java EE

我讀到了Spring的歷史和驅動力,試圖創建這個框架。

我對Java EE和Spring Framework之間的關係感到困惑。例如:

1)我們可以使用Spring MVC 普通的JSP/Servlet創建一個Web應用程序。現在,當我更深入地瞭解Spring MVC時,我開始意識到Spring MVC在Servlet之上提供了一個抽象層,也就是說,易於編寫Web應用程序的開發。

2)Spring JPA:同樣,Spring JPA是一個抽象層,它使用JPA提供程序。

現在,Spring Framework似乎提供了一個抽象層並在內部使用了Java EE技術。

如果我上面的理解是正確的,Spring框架如何比Java EE更好?很多時候我已經閱讀(在線)Spring Framework是Java EE的替代品。如果Spring Framework內部使用Java EE提供的技術,那麼Spring Framework如何替代Java EE?

任何解釋用簡單的話澄清這個疑問高度讚賞。

+0

你可以參考這一點。這可能會有所幫助。 http://www.adam-bien.com/roller/abien/entry/java_ee_6_ejb_3#comment-1246994930760 – Unknown

+0

@FarazDurrani這些都不是特定於Spring的。您可以擁有一個處理10個不同端點的servlet,Java EE具有REST支持和Websocket支持。只是在Java EE演變得非常緩慢的那一天,Spring纔是更快的替代方案。最近差異有所縮小。 – Kayaman

+0

@Kayaman你是對的 –

回答

5

Spring Framework採用了模型 - 視圖 - 控制器(MVC)模式框架,它簡化了創建交互式Web應用程序的過程。 Spring 不需要手動處理Servlet,HttpServletRequests,HttpServletResponses和轉發到JSP的複雜性 ,而是爲您處理這些任務。控制器類中的每個方法都映射到不同的請求URL,方法或請求的其他屬性。該模型從控制器傳遞到地圖的 窗體中的視圖。從控制器 方法返回的視圖或視圖名稱(字符串)會導致Spring轉發到適當的JSP視圖。請求和URL路徑參數 自動轉換爲原始或複雜的控制器方法參數。 除了典型的HTML視圖,Spring還可以自動生成純文本視圖和文件 下載視圖和XML或JSON實體視圖。通過所有這些功能,Spring Framework 大大簡化了在Servlet容器中的工作。

在真實的場景中,你可能會被要求創建與成千上萬的 功能,應該從桌面應用程序,Web瀏覽器,移動網絡瀏覽器, RESTful Web服務和SOAP Web服務訪問的高級應用。只使用Servlets,這項任務很快就會變得令人望而生畏。您最終會在 中複製大量代碼或創建您自己的系統,這些業務邏輯被抽象爲許多用戶界面使用的其他類的集合。幸運的是,Spring Framework提供了這樣一個系統,已經過測試,可以讓您輕鬆使用 。使用Spring,業務邏輯將被封裝在一組稱爲服務的業務對象 中。這些服務執行所有用戶界面通用的操作,例如確保 某些實體屬性已正確指定。您的應用程序包含針對每個用戶界面的控制器和視圖的不同集合 ,並且這些集合使用通用業務對象執行關鍵操作 。然後,控制器對於僅執行用戶界面特定的操作(諸如將表單提交或JSON請求主體轉換成實體並向用戶顯示適當的視圖)是必要的。單元測試變得更容易,代碼被重複使用,並且實現兩者所需的很少的努力。

它使快速開發各種類型的應用程序與 模塊化概念和可測試的代碼更容易。它抽象出「請求」和「響應」的概念,並使您能夠編寫可從許多不同接口使用的應用程序代碼。 Spring Framework是一個Java應用程序容器,它提供了許多有用的功能,例如控制反轉,依賴關係 注入,抽象數據訪問,事務管理等等。 通常被視爲企業的替代品或補充JavaBeans(EJB,一種用於以模塊化方式構建 企業應用程序的Java EE服務器端組件,使用封裝的 Bean),Spring Framework容器可運行在任何Java EE 應用程序服務器,Java EE Web容器或Java SE獨立應用程序(包括服務器守護程序和桌面應用程序) 應用程序。

控制反轉和依賴注入Spring之一 框架的核心特性支持控制反轉(IoC)和依賴注入(DI)的密切相關概念 。 IoC是一個 軟件設計模式,其中彙編程序(在本例中爲框架)在運行時而不是編譯時綁定對象耦合。 DI是最常用的技術。使用DI,一段程序代碼(在Spring Framework中是一個類)聲明它依賴於程序代碼(一個接口)的另一個片段 ,並且在運行時,彙編程序注入一個實例(通常但不總是單例)的依賴。

(從書中抽取:由尼古拉斯·S.·威廉姆斯爲Web應用程序專業的Java)