Java for Enterprise和Spring Framework的發展緊密地聯系在一起。 兩者相互依存,部分復制了好的概念。 在表1中,您可以看到一個簡化的時間表,其中包含Java平臺企業版和Spring框架的一些關鍵里程碑。
該表說明,僅將Java EE v6與Spring v3.0進行比較是有意義的。 Spring Framework和J2EE的早期版本已過時,并且Java EE v7仍未發布(實際上延遲到2013年第二季度 )。
表1:Java平臺和Spring框架的時間表
年 | Java平臺,標準版 | Java平臺企業版 | Spring框架 | 關鍵 里程碑 |
2000 | J2SE v1.3 | J2EE v1.2.1 | EJB 2 –困難的部署描述符 –困難的測試 –很多多余的工件 | |
2001 | J2SE v1.3 | |||
2002年 | ||||
2003年 | J2SE v1.4 | J2EE v1.4 | ||
2004年 | Springv1.0 | 第一個Spring框架 –依賴注入(IoP) –沒有Java EE應用程序服務器 -J2EE的競爭對手 | ||
2005年 | Springv1.2 | |||
2006年 | J2SE v5 | Java EE v5 | Springv2.0 | Java EE 5(EJB 3.0) –許多功能受Spring啟發 –消除了組件,家庭和遠程接口 |
2007年 | Springv2.5 | |||
2008年 | ||||
2009年 | Java SE v6 | Java EE v6 | Springv3.0 | Java EE 6(EJB 3.1) –接口是可選的 –單例豆 –類似cron的調度 –嵌入式容器 Spring3.0 –Spring表達語言 –具有改進的REST支持的MVC框架 |
2010年 | ||||
2011年 | Java SE v 7 | Spring v 3.1 |
因此,在表2中列出了Spring Framework的主要構建塊。 控制容器的反轉是Spring框架的核心功能。 要了解其工作原理,您還可以檢查一個基于Spring框架的最小Java應用程序 (示例代碼使用Spring 2.5.6.A,但主要原理與Spring 3.0相同)。
表2:Spring v3.0框架的選定構建基塊
控制容器倒置 | –控制反轉 –依賴注入 –使用XML文件和/或注釋進行配置(自動接線) |
模型-視圖-控制器框架 | –域對象(模型) -通常,JSP模板(視圖) -DispatcherServlet作為Controller的前控制器 |
面向方面的編程框架 | –涉及各方面問題的基本AOP –基于攔截,并在運行時進行配置 –使用XML文件和/或注釋進行配置 |
批處理框架 | -處理大量的記錄或任務,包括:日志記錄,跟蹤,事務,作業管理,資源管理,異常轉換 |
數據訪問框架 | –為流行的框架提供支持 – JDBC,iBatis,Hibernate,JDO,JPA,Oracle TopLink,Apache OJB和Apache Cayenne |
交易管理框架 | –抽象機制(JTA僅支持嵌套事務和全局事務,并且需要應用程序服務器) |
遠程訪問框架 | –使用Java平臺上可用的各種基于RPC的技術來進行客戶端連接和在服務器上導出對象 |
來源和進一步閱讀: http : //en.wikipedia.org/wiki/Spring_Framework
在表3中,列出了Java平臺企業版6的主要標準和組件。 該表清楚地表明Java EE 6包含許多標準,而不僅僅是一個框架。
表3:Java EE 6體系結構的選定構建塊
![]() 圖片來源 Java EE 6教程 ,p39 | 客戶端機器 – Java Server Faces(JSF 2.0) – JSP標準標記庫(JSTL) –具有JavaServer Faces技術的Ajax – Facelets(XHTML) –支持表達語言(EL) –組件和頁面的模板 – Java Servlet技術(Servlet 3.0) –國際化和本地化Web應用程序 Java EE服務器 – Enterprise JavaBeans(企業Bean)組件 – JAX-RS RESTful Web服務 – JAX-WS Web服務端點 –企業Bean作為POJO(會話和消息驅動) –作為POJO的托管Bean –攔截器 – Java依賴注入(JSR 330) –上下文和依賴注入,CDI(JSR 299) –最小化部署描述符需求的注釋 –會話Bean中的異步方法調用 –聲明和程序安全 – Java消息服務(JMS)API – Java持久性API實體 堅持不懈 – Java數據庫連接API(JDBC) – Java持久性API 2.0 – Java EE連接器體系結構 – Java交易API(JTA) |
來源和進一步閱讀: http : //olex.openlogic.com/wazi/2010/get-started-with-jee6/
幾年前,當我開始學習Spring Framework 3.0時,我實現了一個帶有許多Spring功能的小型Web應用程序。 老實說,這比完成這項任務所必需的更多。 這個小型應用程序具有用于單元和集成測試自動化的大量測試代碼。 它具有100%的線路和分支覆蓋率。 一段時間后,我決定基于Java EE 6架構實現完全相同的應用程序以比較這兩種方法。這兩種技術都運行良好,代碼大小幾乎相同,并且具有良好的可維護性。
一個重要的區別是對測試的支持。 Spring Framework對測試提供了出色的支持,而Java EE 6在此存在一些弱點。 對于Java EE 6,您可以使用Embedded Glassfish,但是這種方法煩人(緩慢(嵌入式容器的啟動時間很長))并且配置麻煩。 Spring Framework的另一個突出功能是易于集成舊應用程序。 逐步地更新舊應用程序比較容易,例如,一開始就使用JDBC,事務管理和IoC的一小部分。
結論
- 從體系結構的角度來看,Spring和Java EE的模型是競爭者。 取決于組織的策略和約束,兩者都會顯示出優點和缺點。
- 通常不建議將兩者結合使用,因為這既浪費EJB容器功能和/或難以維護。 在某些選定的情況下,在Java EE 6應用程序中使用Spring Framework的Building Blocks是有意義的,例如Spring Batch,Data Access。
- Spring框架不是標準-它是框架的產品和實現。 這意味著,沒有其他供應商。 請記住這一點。
參考: 輕量級Java企業體系結構– Spring 3 Framework與Java EE 6之間的不公平且不完整的比較,來自我們的JCG合作伙伴 Markus Sprunck,位于Software Engineering Candies博客上。
翻譯自: https://www.javacodegeeks.com/2012/05/spring-3-and-java-ee-6-unfair-and.html