官术网_书友最值得收藏!

1.4 Spring的應用場景

通過介紹Spring架構設計,我們了解到Spring是一個輕量級的框架。在Spring這個一站式的應用平臺或框架中,其中的各個模塊除了依賴IoC容器和AOP之外,相互之間并沒有很強的耦合性。Spring的最終目標是簡化應用開發的編程模型。它所提供的服務,可以貫穿應用到整個軟件中,從最上層的Web UI到底層的數據操作,到其他企業信息數據的集成,再到各種J2EE服務的使用,等等。這些企業應用服務,Spring都通過其特有的IoC容器和AOP模塊實現。在實現過程中,Spring沒有把這種復雜性轉換成自己被使用的復雜性,這點無疑是成功的,同時大大拓寬了Spring的應用場景。一方面,我們可以把Spring作為一個整體來使用,另一方面,也可以各取所需,把Spring的各個模塊拿出來獨立使用,這取決于我們對Spring提供服務的具體需求。例如,這些需求可能來自一個完整的Java EE企業應用開發需求,可以僅使用Spring的某些模塊,如IoC容器。再如,我們可以使用Spring集成其他的J2EE服務,如JavaMail、JMS、JNDI等,還可以在Android應用環境,甚至在.NET應用環境中使用Spring。使用Spring的時候,可以采用各種不同的方式,而對于這些方式的選擇,完全是由應用來決定的。因而,在對Spring的使用中,我們看到應用很少依賴于Spring特有的API,同時,由于Spring本身的設計也是非常模塊化的,這樣,就為應用開發提供了EJB開發不曾提供的便利。

在Java EE企業應用開發中,我們了解了使用Spring最為基本的場景,也就是使用大家熟知的SSH架構來完成企業應用開發,從而取代傳統的EJB開發模式。在SSH架構中,Struts作為Web UI層、Spring作為中間件平臺、Hibernate作為數據持久化工具(ORM工具)來操作關系數據庫。如果我們使用的是Apache Tomcat、MySQL數據庫和Linux環境,這就是一個完整的使用開源軟件搭建企業應用的典型案例,對于應用開發來說,這樣的架構組合是非常有吸引力的,因為這個架構的使用基本上沒有什么License的費用,而且利用其進行開發的人員眾多,已經成為Java應用開發中的主流技術。在這個架構中,Hibernate是一個獨立的ORM數據持久化產品,目前是JBOSS/RedHat產品組合的一員,是一款著名的Java開源軟件產品,使用者眾多。比較Spring JDBC和Hibernae對數據庫操作的支持,對Spring來說,其對數據持久化的支持,雖然也有JDBC的封裝,可以完成一些將簡單的數據記錄到Java數據對象的轉換和映射工作,但和Hibernate相比,功能上畢竟還是有一些單薄,比如Hibernate還提供了各種數據的查詢、方便的對象和關系數據的映射等。因此,在大多數應用中,將Hibernate和Spring一起使用是非常普遍的,因為一方面Hibernate提供了完整的和已經成為事實標準的ORM功能,另一方面,Spring也提供了與Hibernated的集成和封裝,包括聲明式事務處理的封裝等。對于Web UI層而言,盡管Spring提供了自己的MVC實現,但與Struts的流行程度相比,這個Spring MVC的使用并不廣泛,畢竟在Web開發領域,Struts成名更早。在這個架構組合中,Spring起到的是一個應用平臺的作用,通過Spring的集成,可以讓應用在直接部署在Tomcat這個Web服務器上,因為作為一個直接依賴JVM的輕量級框架,Spring的部署方式就是一個簡單的jar包,不需要以一個J2EE應用服務器的形式出現,從而使整個應用在Tomcat這樣的Web服務器上可以直接運行起來,非常簡潔。同樣地,如果我們在測試環境中使用Spring,還可以選擇使用Jetty來提供Web服務,使用HSQLDB這樣的由純Java實現的數據庫。這樣的環境,不但可以為調試應用帶來許多便利,還可以進一步體現Spring輕量級開發的特點。

同樣,因為Spring的實現中,它的核心實現,比如IoC容器實現,是直接依賴JVM虛擬機的,也就是說,在Java環境中,Spring IoC容器是可以單獨使用的,特別是在BeanFactory的基本實現中,包含在一個小小的jar包里面,可以直接在應用中引用。對于Spring而言,如果要在.NET環境下使用其提供的基本特性,Spring項目也提供了Spring .NET的實現;如果需要在Android移動平臺中使用Spring的基本特性,Spring也有對Spring Android項目的支持。從這些應用場景上可以看出,因為Spring設計時的輕量級特性,以及推崇POJO開發,所以使用起來非常靈活。在對Spring的應用中,Spring團隊為我們列舉了Spring的價值,非常值得參考。

? Spring是一個非侵入性(non-invasive)框架,其目標是使應用程序代碼對框架的依賴最小化,應用代碼可以在沒有Spring或者其他容器的情況下運行。

? Spring提供了一個一致的編程模型,使應用直接使用POJO開發,從而可以與運行環境(如應用服務器)隔離開來。

? Spring推動應用的設計風格向面向對象及面向接口編程轉變,提高了代碼的重用性和可測試性。

? Spring改進了體系結構的選擇,雖然作為應用平臺,Spring可以幫助我們選擇不同的技術實現,比如從Hiberante切換到其他ORM工具,從Struts切換到Spring MVC,盡管我們通常不會這樣做,但是我們在技術方案上選擇使用Spring作為應用平臺,Spring至少為我們提供了這種可能性和選擇,從而降低了平臺鎖定的風險。

主站蜘蛛池模板: 湄潭县| 育儿| 林州市| 边坝县| 岳阳县| 子洲县| 江山市| 临高县| 杂多县| 平遥县| 拜泉县| 文登市| 南平市| 巨野县| 应城市| 义马市| 延川县| 军事| 泾阳县| 澄江县| 澄迈县| 长宁区| 休宁县| 肇州县| 松江区| 本溪| 合肥市| 泰兴市| 修武县| 黑山县| 遂平县| 天祝| 四子王旗| 漳州市| 陵水| 章丘市| 中卫市| 涿州市| 贡觉县| 汝城县| 洛宁县|