Spring參考手冊 1 Spring Framework簡介和典型的Web應(yīng)用程序

翻譯自Spring官方文檔 4.1.2版本

一荣德、Spring Framework構(gòu)成##

Spring Framework根據(jù)功能不同大約可以分為20個模塊澳窑。這些模塊又可以分組為:核心容器(Core Container), 數(shù)據(jù)訪問/集成(Data Access/Integration),網(wǎng)絡(luò)(Web), 面向切面編程(Aspect Oriented Programming), 工具(Instrumentation), 消息(Messaging), and 測試(Test)。

1.1 核心容器###

核心容器包含:spring-core, spring-beans, spring-context, 和spring-expression (Spring Expression Language)模塊。

spring-corespring-beans模塊提供框架的基本組成部分,包括IoC 和Dependency Injection特性。BeanFactory是一個復(fù)雜的工廠模式的實現(xiàn)螟炫。它不需要你手動編碼來實現(xiàn)單例并且允許你在實際的編程中將配置和對象間的依賴解耦。

spring-context模塊構(gòu)建在spring-corespring-beans模塊的基礎(chǔ)上:通過框架在存取對象的方式上是和JNDI注冊類似的艺晴。Context模塊繼承Beans模塊的特點并添加國際化支持(例如:resource bundles)昼钻、事件傳播、資源加載封寞、上下文的透明創(chuàng)建然评,例如:一個Servlet容器。Context模塊同樣也支持Java EE特性例如EJB,狈究、JMX和基本的遠程調(diào)用碗淌。ApplicationContext接口是Context模塊的中心點。

spring-expression模塊提供強大的表達式語言在運行時用來查詢和操作對象圖抖锥。它是在JSP 2.1規(guī)范中指定的unified expression language (unified EL)的擴展亿眠。這個語言支持設(shè)置和獲取屬性值,屬性賦值磅废,方法調(diào)用纳像,訪問數(shù)組、集合拯勉、索引竟趾,邏輯和算數(shù)運算,命名變量宫峦,根據(jù)名稱從Spring的IoC容器取回對象潭兽。它還支持列表映射和選取就像普通的列表集合一樣。

1.2 AOP和工具###

spring-aop模塊提供一個AOP 行業(yè)兼容的面向切面的編程實現(xiàn)允許你定義以下幾個操作:例如定義方法攔截器斗遏、定義切點來清晰的分離功能不同的代碼。通過使用源碼級元數(shù)據(jù)的功能鞋邑,你可以將行為信息融入在你的代碼(記錄日志這個最容易想到)诵次。

獨立的spring-aspects模塊集成了AspectJ。

spring-instrument模塊提供了類工具支持和類加載器實現(xiàn)枚碗,被用于一些應(yīng)用程序服務(wù)器中逾一。

1.3 消息###

Spring Framework 4包括了一個spring-messaging模塊,它具有一些主要的抽象例如:Message肮雨、MessageChannel遵堵、MessageHandler和其他一些抽象一起充當(dāng)基于消息的應(yīng)用程序的基礎(chǔ)。這個模塊也包含了一組注解來映射消息到方法,類似于Spring MVC基于注解的編程方式陌宿。

1.4 數(shù)據(jù)訪問/集成###

數(shù)據(jù)訪問/集成層包括JDBC, ORM, OXM, JMS, 和Transaction等模塊锡足。
spring-jdbc模塊提供一個JDBC抽象層,消除了冗長的JDBC編碼并且解析了數(shù)據(jù)庫廠商特定的錯誤代碼壳坪。
對于那些實現(xiàn)了特殊接口和你的POJO類舶得,spring-tx模塊提供了編程式和聲明式事務(wù)管理。
spring-orm模塊為流行的對象關(guān)系映射APIs提供了集成爽蝴,包括:JPA, JDO, 和Hibernate沐批。如果使用spring-orm模塊你可以使用這些O/R-mapping框架同時結(jié)合使用Spring提供的所有其他特性。例如:之前說到的聲明式事務(wù)管理特性蝎亚。
spring-oxm模塊提供了一個抽象層來支持Object/XML mapping的實現(xiàn)九孩,例如:JAXB, Castor, XMLBeans, JiBX 和XStream。
spring-jms模塊包含了生產(chǎn)和消費信息的特性发框。從Spring Framework 4.1以后躺彬,它提供了與spring-messaging模塊集成。

1.5 網(wǎng)絡(luò)###

網(wǎng)絡(luò)層包括spring-web, spring-webmvc, spring-websocket,和spring-webmvc-portlet模塊缤底。

spring-web模塊提供了基本的面向網(wǎng)絡(luò)的集成特性顾患,例如:文件上傳功能、初始化IoC容器可以使用Servlet監(jiān)聽器和一個面向網(wǎng)絡(luò)的應(yīng)用程序上下文个唧。它也包含了Spring遠程調(diào)用支持的網(wǎng)絡(luò)相關(guān)的部分江解。

spring-webmvc模塊(也被叫做Web-Servlet模塊)包含了為web應(yīng)用程序設(shè)計的Spring的model-view-controller (MVC)實現(xiàn)。Spring的MVC框架在域模型(domain model)代碼和web表單之間提供了一個清晰的劃分徙歼,并且與Spring Framework的所有其他特性集成犁河。

spring-webmvc-portlet模塊(也被叫做Web-Portlet模塊)提供了MVC實現(xiàn)用來在門戶環(huán)境(Portlet environment )中使用,借鑒了spring-webmvc的功能魄梯。

1.6 測試###

spring-test模塊通過JUnit 或者 TestNG為Spring組件進行單元測試和集成測試提供了支持桨螺。它提供了ApplicationContexts和那些上下文緩存的一致性加載。它也提供了模擬對象(mock objects)使你可以去測試你的代碼在隔離的狀態(tài)酿秸。

二灭翔、典型的完全成熟的Spring web application##


Spring的聲明式事務(wù)管理特性使web應(yīng)用程序完全是事務(wù)性的,就像你使用EJB管理事務(wù)那樣辣苏。你的所有自定義業(yè)務(wù)邏輯可以被實現(xiàn)為簡單的POJO(其實我對POJO還挺模糊)并且被Spring的 IoC 容器管理肝箱。額外的服務(wù)包括發(fā)送郵件并且驗證是獨立與web層的,這樣允許你選擇在哪里執(zhí)行驗證規(guī)則稀蟋。Spring的ORM支持已經(jīng)與JPA, Hibernate 和 JDO集成煌张;例如,當(dāng)使用Hibernate時退客,你可以繼續(xù)使用你已有的映射文件和標準的Hibernate SessionFactory配置骏融。表單控制器(Form controller)通過域模型(domain model)無縫的與web層集成链嘀,不再需要ActionForms或者其他類來將HTTP參數(shù)轉(zhuǎn)換成你域模型里的值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末档玻,一起剝皮案震驚了整個濱河市怀泊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窃肠,老刑警劉巖包个,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冤留,居然都是意外死亡碧囊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門纤怒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糯而,“玉大人,你說我怎么就攤上這事泊窘∠ㄍ眨” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵烘豹,是天一觀的道長瓜贾。 經(jīng)常有香客問我,道長携悯,這世上最難降的妖魔是什么祭芦? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮憔鬼,結(jié)果婚禮上龟劲,老公的妹妹穿的比我還像新娘。我一直安慰自己轴或,他們只是感情好昌跌,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著照雁,像睡著了一般蚕愤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饺蚊,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天萍诱,我揣著相機與錄音,去河邊找鬼卸勺。 笑死,一個胖子當(dāng)著我的面吹牛烫扼,可吹牛的內(nèi)容都是我干的曙求。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼悟狱!你這毒婦竟也來了静浴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤挤渐,失蹤者是張志新(化名)和其女友劉穎苹享,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浴麻,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡得问,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了软免。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宫纬。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖膏萧,靈堂內(nèi)的尸體忽然破棺而出漓骚,到底是詐尸還是另有隱情,我是刑警寧澤榛泛,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布蝌蹂,位于F島的核電站,受9級特大地震影響曹锨,放射性物質(zhì)發(fā)生泄漏孤个。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一艘希、第九天 我趴在偏房一處隱蔽的房頂上張望硼身。 院中可真熱鬧,春花似錦覆享、人聲如沸佳遂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丑罪。三九已至,卻和暖如春凤壁,著一層夾襖步出監(jiān)牢的瞬間吩屹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工拧抖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留煤搜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓唧席,卻偏偏與公主長得像擦盾,于是被迫代替她去往敵國和親嘲驾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,823評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理迹卢,服務(wù)發(fā)現(xiàn)辽故,斷路器,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • 文章作者:Tyan博客:noahsnail.com 2.Introduction to the Spring Fr...
    SnailTyan閱讀 5,390評論 7 56
  • 什么是Spring Spring是一個開源的Java EE開發(fā)框架腐碱。Spring框架的核心功能可以應(yīng)用在任何Jav...
    jemmm閱讀 16,465評論 1 133
  • 我想誊垢,謊言從不是出于故意≈⒓“謊”字拆開喂走,是在荒野中說話,“一片空曠中筒饰,因為缺乏安全感而自言自語”缴啡,想想怪可憐的,我...
    乙辰閱讀 409評論 0 0