下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
定義什么是SpringSpring是一個(gè)開源框架,它由RodJohnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。[1]?目的:解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性 ?功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能 ?范圍:任何Java應(yīng)用 簡單來說,Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(loC)和面向切面(AOP)的容器框架。Spring的歷史要談Spring的歷史,就要先談J2EE。J2EE應(yīng)用程序的廣泛實(shí)現(xiàn)是在1999年和2000年開始的,它的出現(xiàn)帶來了諸如事務(wù)管理之類的核心中間層概念的標(biāo)準(zhǔn)化,但是在實(shí)踐中并沒有獲得絕對(duì)的成功,因?yàn)殚_發(fā)效率,開發(fā)難度和實(shí)際的性能都令人失望。 曾經(jīng)使用過EJB開發(fā)J2EE應(yīng)用的人,一定知道,在EJB開始的學(xué)習(xí)和應(yīng)用非常的艱苦,很多東西都不能一下子就很容易的理解。EJB要嚴(yán)格地繼承各種不同類型的接口,類似的或者重復(fù)的代碼大量存在。而配置也是復(fù)雜和單調(diào),同樣使用JNDI進(jìn)行對(duì)象查找的代碼也是單調(diào)而枯燥。雖然有一些開發(fā)工作隨著xdoclet的出現(xiàn),而有所緩解,但是學(xué)習(xí)EJB的高昂代價(jià),和極低的開發(fā)效率,極高的資源消耗,都造成了EJB的使用困難。而Spring出現(xiàn)的初衷就是為了解決類似的這些問題。 Spring的一個(gè)最大的目的就是使J2EE開發(fā)更加容易。同時(shí),Spring之所以與Struts、Hibernate等單層框架不同,是因?yàn)镾pring致力于提供一個(gè)以統(tǒng)一的、高效的方式構(gòu)造整個(gè)應(yīng)用,并且可以將單層框架以最佳的組合揉和在一起建立一個(gè)連貫的體系。可以說Spring是一個(gè)提供了更完善開發(fā)環(huán)境的一個(gè)框架,可以為POJO(PlainOldJavaObject)對(duì)象提供企業(yè)級(jí)的服務(wù)。 Spring的形成,最初來自RodJahnson所著的一本很有影響力的書籍《ExpertOne-on-OneJ2EEDesignandDevelopment》就是在這本書中第一次出現(xiàn)了Spring的一些核心思想,該書出版于2002年。另外一本書《ExpertOne-on-OneJ2EEDevelopmentwithoutEJB》更進(jìn)一步闡述了在不使用EJB開發(fā)J2EE企業(yè)級(jí)應(yīng)用的一些設(shè)計(jì)思想和具體的做法。有時(shí)間了可以詳細(xì)的研讀一下。 Spring的初衷:1、J2EE開始應(yīng)該更加簡單。 2、使用接口而不是使用類,是更好的編程習(xí)慣。Spring將使用接口的復(fù)雜度幾乎降低到了零。 3、為JavaBean提供了一個(gè)更好的TOC\o"1-5"\h\z應(yīng)用配置框架。 4、更多地強(qiáng)調(diào)面向?qū)ο蟮脑O(shè)計(jì),而不是現(xiàn)行的技術(shù)如J2EE。 5、盡量減少不必要的異常捕捉。 6、使應(yīng)用程序更加容易測(cè)試。 Spring的目標(biāo): 1、可以令人方便愉快的使用Spring。 2、應(yīng)用程序代碼并不依賴于SpringAPIs。 3、Spring不和現(xiàn)有的解決方案競爭,而是致力于將它們?nèi)诤显谝黄稹?Spring的基本組成:1、最完善的輕量級(jí)核心框架。 2、通用的事務(wù)管理抽象層。 3、JDBC抽象層。 4、集成了Toplink,Hibernate,JDO,andiBATISSQLMaps 5、AOP功能。6、靈活的MVCWeb應(yīng)用框架。Spring的使命?J2EE應(yīng)該更加容易使用。 ?面向?qū)ο蟮脑O(shè)計(jì)比任何實(shí)現(xiàn)技術(shù)(比如J2EE)都重要。 ?面向接口編程,而不是針對(duì)類編程。Spring將使用接口的復(fù)雜度降低到零。(面向接口編程有哪些復(fù)雜度?) ?弋碼應(yīng)該易于測(cè)試。Spring框架會(huì)幫助你,使代碼的測(cè)試更加簡單。 ?JavaBean提供了應(yīng)用程序配置的最好方法。 ?在Java中,已檢查異常(Checkedexception)被過度使用。框架不應(yīng)該迫使你捕獲不能恢復(fù)的異常。Spring框架簡介Spring: Spring是一個(gè)開源框架,它由RodJohnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。簡單來說,Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(loC)和面向切面(AOP)的容器框架。 輕量從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴于Spring的特定類。 控制反轉(zhuǎn)Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過被動(dòng)的方式傳遞進(jìn)來,而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。你可以認(rèn)為IoC與JNDI相反一一不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它。面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)(transaction)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。 容器——Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建——基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)例或者每次需要時(shí)都生成一個(gè)新的實(shí)例一一以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。 框架——Spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。 所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。Spring框架的7個(gè)模塊Spring框架由七個(gè)定義明確的模塊組成(圖1.1)。Spring框架圖(Spring框架概覽圖1.1) 如果作為一個(gè)整體,這些模塊為你提供了開發(fā)企業(yè)應(yīng)用所需的一切。但你不必將應(yīng)用完全基于Spring框架。你可以自由地挑選適合你的應(yīng)用的模塊而忽略其余的模塊。 就像你所看到的,所有的Spring模塊都是在核心容器之上構(gòu)建的。容器定義了Bean是如何創(chuàng)建、配置和管理的——更多的Spring細(xì)節(jié)。當(dāng)你配置你的應(yīng)用時(shí),你會(huì)潛在地使用這些類。但是作為一名開發(fā)者,你最可能對(duì)影響容器所提供的服務(wù)的其它模塊感興趣。這些模塊將會(huì)為你提供用于構(gòu)建應(yīng)用服務(wù)的框架,例如AOP和持久性。1、核心容器 這是Spring框架最基礎(chǔ)的部分,它提供了依賴注入(Dependencylnjection)特征來實(shí)現(xiàn)容器對(duì)Bean的管理。這里最基本的概念是BeanFactory,它是任何Spring應(yīng)用的核心。BeanFactory是工廠模式的一個(gè)實(shí)現(xiàn),它使用IoC將應(yīng)用配置和依賴說明從實(shí)際的應(yīng)用代碼中分離出來。 2、應(yīng)用上下文(Context)模塊核心模塊的BeanFactory使Spring成為一個(gè)容器,而上下文模塊使它成為一個(gè)框架。這個(gè)模塊擴(kuò)展了BeanFactory的概念,增加了對(duì)國際化(I18N)消息、事件傳播以及驗(yàn)證的支持。 另外,這個(gè)模塊提供了許多企業(yè)服務(wù),例如電子郵件、JNDI訪問、EJB集成、遠(yuǎn)程以及時(shí)序調(diào)度(scheduling)服務(wù)。也包括了對(duì)模版框架例如Velocity和FreeMarker集成的支持。 3>Spring的AOP模塊 Spring在它的AOP模塊中提供了對(duì)面向切面編程的豐富支持。這個(gè)模塊是在Spring應(yīng)用中實(shí)現(xiàn)切面編程的基礎(chǔ)。為了確保Spring與其它AOP框架的互用性,Spring的AOP支持基于AOP聯(lián)盟定義的API。AOP聯(lián)盟是一個(gè)開源項(xiàng)目,它的目標(biāo)是通過定義一組共同的接口和組件來促進(jìn)AOP的使用以及不同的AOP實(shí)現(xiàn)之間的互用性。通過訪問他們的站點(diǎn)[2你可以找到關(guān)于AOP聯(lián)盟的更多內(nèi)容。Spring的AOP模塊也將元數(shù)據(jù)編程引入了Spring。使用Spring的元數(shù)據(jù)支持,你可以為你的源代碼增加注釋,指示Spring在何處以及如何應(yīng)用切面函數(shù)。 4、JDBC抽象和DAO模塊使用JDBC經(jīng)常導(dǎo)致大量的重復(fù)代碼,取得連接、創(chuàng)建語句、處理結(jié)果集,然后關(guān)閉連接。Spring的JDBC和DAO模塊抽取了這些重復(fù)代碼,因此你可以保持你的數(shù)據(jù)庫訪問代碼干凈簡潔,并且可以防止因關(guān)閉數(shù)據(jù)庫資源失敗而引起的問題。這個(gè)模塊還在幾種數(shù)據(jù)庫服務(wù)器給出的錯(cuò)誤消息之上建立了一個(gè)有意義的異常層。使你不用再試圖破譯神秘的私有的SQL錯(cuò)誤消息!另外,這個(gè)模塊還使用了Spring的AOP模塊為Spring應(yīng)用中的對(duì)象提供了事務(wù)管理服務(wù)。5、對(duì)象/關(guān)系映射集成模塊 對(duì)那些更喜歡使用對(duì)象/關(guān)系映射工具而不是直接使用JDBC的人,Spring提供了ORM模塊。Spring并不試圖實(shí)現(xiàn)它自己的ORM解決方案,而是為幾種流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATISSQL映射。Spring的事務(wù)管理支持這些ORM框架中的每一個(gè)也包括JDBC。 6、Spring的Web模塊Web上下文模塊建立于應(yīng)用上下文模塊之上,提供了一個(gè)適合于/r/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋買賣合同協(xié)議書范本下載
- 直播勞務(wù)的合同
- 圖書銷售合同
- 商鋪轉(zhuǎn)讓租賃合同范本
- 提高團(tuán)隊(duì)協(xié)作能力的技能培訓(xùn)課程
- 魚種產(chǎn)品購銷合同書樣本年
- 2025合同模板修繕修理合同范本
- 隧洞施工合同范本
- 裝修房屋托管合同范本
- 購房協(xié)議合同
- 《監(jiān)理安全培訓(xùn)》課件
- 2024高二語文期末試卷(選必上、中)及詳細(xì)答案
- 淋巴瘤患者的護(hù)理
- 水利工程建設(shè)管理概述課件
- 人美版初中美術(shù)知識(shí)點(diǎn)匯總九年級(jí)全冊(cè)
- 2022中和北美腰椎間盤突出癥診療指南的對(duì)比(全文)
- 深度學(xué)習(xí)視角下幼兒科學(xué)探究活動(dòng)設(shè)計(jì)
- 乳房整形知情同意書
- 全國核技術(shù)利用輻射安全申報(bào)系統(tǒng)填報(bào)指南
- GB/T 18344-2016汽車維護(hù)、檢測(cè)、診斷技術(shù)規(guī)范
- 青島版科學(xué)(2017)六三制六年級(jí)下冊(cè)第2單元《生物與環(huán)境》全單元課件
評(píng)論
0/150
提交評(píng)論