獲取spring發(fā)布包之后,你或許會驚訝的發(fā)現(xiàn):spring開發(fā)小組并沒有用單個(gè)jar文件來包含所有代碼,而是選擇建立包含有完整發(fā)布的單個(gè)jar和8個(gè)獨(dú)立jar文件來包含對應(yīng)的spring組件。未來版本的組件jar文件數(shù)量很可能會有所增加,可令你更加自如的選擇自己的代碼要包含的特性。
完整發(fā)布包
所有發(fā)布版本都提供spring.jar文件,它差不多包含spring framework類的完整發(fā)布包。之所以說“差不多”是因?yàn)樗鼘?shí)際上并未包含任何mock類,這些類隨spring一起發(fā)布,作為輔助測試之用。這可是spring開發(fā)小組的明智決定,因?yàn)榘l(fā)布應(yīng)用時(shí)你幾乎從不需要同時(shí)分發(fā)mock類;你只是在開發(fā)環(huán)境下用它們來輔助測試過程。除此之外,spring.jar文件包含spring main源碼樹里所有其它類。
組件發(fā)布包
除了spring.jar文件,spring還包括前面提及的另外8個(gè)jar文件;其中一個(gè)包含mock類,另外七個(gè)包含spring framework的獨(dú)立組件。表2-1列出了這些jar文件,并伴有對應(yīng)組件的說明。
表2-1:spring組件發(fā)布包
| jar文件 | 說 明 |
| spring-aop.jar | 這個(gè)jar文件包含在應(yīng)用中使用spring的aop特性時(shí)所需的所有類。如果打算使用其它基于aop的spring特性,比如聲明型事務(wù)管理(declarative transaction management),也需要在應(yīng)用里包含這個(gè)jar文件。 |
| spring-context.jar | 這個(gè)包里的類為spring核心提供了大量擴(kuò)展。你可以找到使用spring applicationcontext特性(第5章有介紹)時(shí)所需的全部類,以及支持ejb、jndi和郵件集成所需的類。此外這個(gè)包還囊括spring遠(yuǎn)程調(diào)用(remoting)類,用來與模板(templating)引擎如velocity和freemarker集成的類,以及驗(yàn)證基類(base validation class)。值得注意的是,實(shí)際上許多類被包含在這個(gè)包里并不是太恰當(dāng),比如遠(yuǎn)程調(diào)用和ejb支持之類的特性,打包成單獨(dú)的jar文件更為恰當(dāng)。 |
| spring-core.jar | 所有應(yīng)用都要用到這個(gè)jar文件,它包含訪問配置文件、創(chuàng)建和管理bean以及進(jìn)行di操作相關(guān)的所有類。如果你的應(yīng)用只需基本的di支持,該jar文件足以滿足需要。此外該jar文件還包含一組極為有用的工具類,spring代碼庫大量使用了這些類,也可以用在自己的應(yīng)用中。 |
| spring-dao.jar | 這個(gè)jar文件囊括 |
| spring-mock.jar | 前面已經(jīng)提及,spring提供了一整套mock類來輔助應(yīng)用的測試。spring測試套件使用了其中大量mock類,因此它們已久經(jīng)考驗(yàn),可令你的應(yīng)用測試更為簡單。至于模擬(mock)httpservletrequest 和httpservletresponse類在web應(yīng)用單元測試中的巨大用處,更是毋須贅言。 |
| spring-orm.jar | 這個(gè)jar文件對spring的標(biāo)準(zhǔn)dao特性集進(jìn)行了擴(kuò)展,使其支持hibernate、ibatis和jdo。這個(gè)jar文件里大量的類都依賴spring-dao.jar里的類,毫無疑問你需要同時(shí)包含后者。將來每個(gè)orm工具或許會單獨(dú)打包,這樣一來,使用ibatis時(shí)你的應(yīng)用就無需再包含hibernate和jdo相關(guān)的類。 |
| spring-web.jar | 這個(gè)jar文件包含web應(yīng)用使用spring時(shí)所需的核心類,包括自動(dòng)載入applicationcontext特性的類、struts集成類、文件上傳的支持類和大量輔助類,用來執(zhí)行重復(fù)性的任務(wù)如解析查詢(query)字符串里的int值。 |
| spring-webmvc.jar | 這個(gè)jar文件囊括spring mvc框架相關(guān)的所有類。如果你的應(yīng)用使用了獨(dú)立的mvc框架,則無需這個(gè)jar文件里的任何類。第18章會對spring mvc作更詳細(xì)的介紹。 |
如何選擇發(fā)布包
決定選用哪些發(fā)布包其實(shí)相當(dāng)簡單。如果你正在構(gòu)建web應(yīng)用并將全程使用spring,那么最好使用spring.jar文件,以免陷入忙于維護(hù)不同文件之泥沼。同樣的,如果你的應(yīng)用僅僅用到簡單的di容器,那么只需spring-core.jar即可搞定。如果你對發(fā)布的大小要求很高,那么理應(yīng)精挑細(xì)選,只取用包含自己所需特性的jar文件。
注意上述組件發(fā)布包的粒度實(shí)際上并不是那么小;不過顯然你至少可以避免包含自己的應(yīng)用不需要的全部類(譯注:即還是會包含一些不需要的類)。或許你可以設(shè)法令整個(gè)應(yīng)用稍稍變小,不過節(jié)省空間的重頭戲在于如何準(zhǔn)確找出自己所需的spring依賴關(guān)系,合者納之,余者棄之。
新聞熱點(diǎn)
疑難解答
圖片精選