Spring入門指引之理解Spring的打包方式

來源:互聯網
上載者:User
打包   擷取Spring發布包之後,你或許會驚訝的發現:Spring開發小組並沒有用單個JAR檔案來包含所有代碼,而是選擇建立包含有完整發布的單個JAR和8個獨立JAR檔案來包含對應的Spring組件。未來版本的組件JAR檔案數量很可能會有所增加,可令你更加自如的選擇自己的代碼要包含的特性。

   完整發布包

  所有發布版本都提供spring.jar檔案,它差不多包含Spring framework類的完整發布包。之所以說“差不多”是因為它實際上並未包含任何mock類,這些類隨Spring一起發布,作為輔助測試之用。這可是Spring開發小組的明智決定,因為發布應用時你幾乎從不需要同時分發mock類;你只是在開發環境下用它們來輔助測試過程。除此之外,spring.jar檔案包含Spring main源碼樹裡所有其它類。

   組件發布包

  除了spring.jar檔案,Spring還包括前面提及的另外8個JAR檔案;其中一個包含mock類,另外七個包含Spring framework的獨立組件。表2-1列出了這些JAR檔案,並伴有對應組件的說明。


表2-1:Spring組件發布包

JAR檔案

說 明
spring-aop.jar 這個JAR檔案包含在應用中使用Spring的AOP特性時所需的所有類。如果打算使用其它基於AOP的Spring特性,比如聲明型交易管理(declarative transaction management),也需要在應用裡包含這個JAR檔案。
spring-context.jar 這個包裡的類為Spring核心提供了大量擴充。你可以找到使用Spring ApplicationContext特性(第5章有介紹)時所需的全部類,以及支援EJB、JNDI和郵件整合所需的類。此外這個包還囊括Spring遠程調用(remoting)類,用來與模板(templating)引擎如Velocity和FreeMarker整合的類,以及驗證基類(base validation class)。值得注意的是,實際上許多類被包含在這個包裡並不是太恰當,比如遠程調用和EJB支援之類的特性,打包成單獨的JAR檔案更為恰當。
spring-core.jar 所有應用都要用到這個JAR檔案,它包含訪問設定檔、建立和管理bean以及進行DI操作相關的所有類。如果你的應用只需基本的DI支援,該JAR檔案足以滿足需要。此外該JAR檔案還包含一組極為有用的工具類,Spring程式碼程式庫大量使用了這些類,也可以用在自己的應用中。
spring-dao.jar 這個JAR檔案囊括Spring DAO支援相關的所有基類,還包含用JDBC和Spring的事務抽象層(transaction abstraction layer)進行資料訪問的所有類。為了使用聲明型事務支援,還需在自己的應用裡包含spring-aop.jar。
spring-mock.jar 前面已經提及,Spring提供了一整套mock類來輔助應用的測試。Spring測試套件使用了其中大量mock類,因此它們已久經考驗,可令你的應用測試更為簡單。至於類比(mock)HttpServletRequest 和HttpServletResponse類在web應用單元測試中的巨大用處,更是毋須贅言。
spring-orm.jar 這個JAR檔案對Spring的標準DAO特性集進行了擴充,使其支援Hibernate、iBATIS和JDO。這個JAR檔案裡大量的類都依賴spring-dao.jar裡的類,毫無疑問你需要同時包含後者。將來每個ORM工具或許會單獨打包,這樣一來,使用iBATIS時你的應用就無需再包含Hibernate和JDO相關的類。
spring-web.jar 這個JAR檔案包含web應用使用Spring時所需的核心類,包括自動載入ApplicationContext特性的類、Struts整合類、檔案上傳的支援類和大量輔助類,用來執行重複性的任務如解析查詢(query)字串裡的int值。
spring-webmvc.jar
這個JAR檔案囊括Spring MVC架構相關的所有類。如果你的應用使用了獨立的MVC架構,則無需這個JAR檔案裡的任何類。第18章會對Spring MVC作更詳細的介紹。

   如何選擇發布包

  決定選用哪些發布包其實相當簡單。如果你正在構建web應用並將全程使用Spring,那麼最好使用spring.jar檔案,以免陷入忙於維護不同檔案之泥沼。同樣的,如果你的應用僅僅用到簡單的DI容器,那麼只需spring-core.jar即可搞定。如果你對發布的大小要求很高,那麼理應精挑細選,只取用包含自己所需特性的JAR檔案。

  注意上述組件發布包的粒度實際上並不是那麼小;不過顯然你至少可以避免包含自己的應用不需要的全部類(譯註:即還是會包含一些不需要的類)。或許你可以設法令整個應用稍稍變小,不過節省空間的重頭戲在於如何準確找出自己所需的Spring依賴關係,合者納之,餘者棄之。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.