




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第九章Spring的基礎(chǔ)知識(shí)本章要點(diǎn)Spring簡介Spring框架的系統(tǒng)架構(gòu)Spring框架的主要技術(shù)特性·Spring開發(fā)環(huán)境Spring簡介Spring是時(shí)下最流行、最完善的Web應(yīng)用開源框架,為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性,由Rod
Johnson創(chuàng)建Spring使用JavaBean完成以前只可能由EJB完成的事情,不僅可以完成服務(wù)器端的開發(fā),從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益Spring框架的功能可以用在任何J2EE服務(wù)器中,它的核心要點(diǎn)是支持不綁定到特定J2EE服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對象,因此,可以在不同J2EE環(huán)境(Web或EJB)、獨(dú)立應(yīng)用程序、測試環(huán)境之間重用Spring的基本概念Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面AOP的容器框架,在Spring框架下能夠?qū)崿F(xiàn)多
個(gè)子框架的組合,這些子框架之間彼此獨(dú)立,也可以使用其它框架替代,為J2EE應(yīng)用程序開發(fā)提供集成框架Spring是一種無侵入式的高擴(kuò)展框架,代碼中不需要涉及Spring的特定類,即可將其納入Spring容器進(jìn)行管理,其核心是提供一種新的機(jī)制來管理業(yè)務(wù)對象及其依賴關(guān)系Spring的特點(diǎn)Spring作為實(shí)現(xiàn)J2EE的一個(gè)全方位應(yīng)用程序框架,為開發(fā)企業(yè)級(jí)應(yīng)用提供了一個(gè)健壯、高效的解決方案輕量級(jí)
從大小與開銷兩方面而言Spring都是輕量的,完整的
Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布,并且Spring所需的處理開銷也是微不足道的控制反轉(zhuǎn)
Spring通過IoC促進(jìn)了松耦合,容器在對象初始化時(shí)主動(dòng)將依賴傳遞給它,由容器控制程序之間的關(guān)系,而非傳統(tǒng)實(shí)現(xiàn)中,由程序代碼直接操縱,即控制權(quán)由應(yīng)用代碼轉(zhuǎn)到了外部容器Spring的主要功能
基于JavaBean的配置管理,采用IoC的原理,特別是對依賴注入技術(shù)的使用一個(gè)核心的,全局適用的bean工廠一個(gè)一般抽象化的層面來管理數(shù)據(jù)庫間的數(shù)據(jù)處理
建立在框架內(nèi)的,對Java數(shù)據(jù)處理API和單獨(dú)的JDBC數(shù)據(jù)源的一般性策略一些可持續(xù)性的框架,如Hibernate,JDO,iBATIS的整合
web應(yīng)用中的MVC框架,基于核心的Spring功能,支持多種產(chǎn)生視圖的技術(shù),包括JSP,F(xiàn)reeMarker,Velocity,Tiles,iText,和POI大量的AOP框架以提供諸如數(shù)據(jù)處理管理的服務(wù)Spring的組成Spring的jar包到/download下載spring,然后進(jìn)行解壓縮,在解壓目錄中找到對應(yīng)的jar文件,拷貝到類路徑lib下Spring配置文件默認(rèn)情況下是applicationContext.xml文件,可以建立很多xml文件Spring
APISpring提供構(gòu)建應(yīng)用的所有層的工具,可以使用API通過工具訪問數(shù)據(jù)Spring簡介Spring框架的系統(tǒng)架構(gòu)Spring框架的主要技術(shù)特性·Spring開發(fā)環(huán)境Spring框架的系統(tǒng)架構(gòu)Spring框架不斷地在發(fā)展和完善,但基本與核心的部分已經(jīng)穩(wěn)定,它是一個(gè)分層架構(gòu),由7個(gè)定義良好的模塊組成Spring模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理bean的方式Spring框架的每個(gè)模塊(或組件)都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)·Spring
CoreSpring框架最基礎(chǔ)的部分,提供Spring框架的基本功能,它提供了依賴注入(Dependency
Injection)特征來實(shí)現(xiàn)容器對Bean的管理主要組件是BeanFactory,它是工廠模式的實(shí)現(xiàn),使用
IoC將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開·Spring
Context·Spring上下文使其成為一個(gè)框架,它是一個(gè)配置文件,向Spring框架提供上下文信息,包括企業(yè)服務(wù),例如
JNDI、EJB、電子郵件、國際化、校驗(yàn)和調(diào)度功能·Spring
AOP通過配置管理特性,SpringAOP模塊直接將面向切面的編程功能集成到了Spring框架中,所以,可以很容易地使Spring框架管理的任何對象支持AOP為基于Spring的應(yīng)用程序中的對象提供了事務(wù)管理服務(wù),通過使用Spring
AOP,不用依賴EJB組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中將元數(shù)據(jù)編程中引入Spring,使用Spring的元數(shù)據(jù)支持,可以為源代碼增加注釋,指示Spring在何處以及如何應(yīng)用切面函數(shù)·Spring
DAO使用JDBC經(jīng)常導(dǎo)致大量的重復(fù)代碼,取得連接、創(chuàng)建語句、處理結(jié)果集,然后關(guān)閉連接。Spring的JDBC和DAO模塊抽取了這些重復(fù)代碼,因此可以保持?jǐn)?shù)據(jù)庫
訪問代碼干凈簡潔,并且可以防止因關(guān)閉數(shù)據(jù)庫資源失敗而引起的問題JDBC
DAO抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯(cuò)誤消息,面向JDBC的異常遵從通用的DAO異常層次
結(jié)構(gòu)·Spring
ORM·
對象/關(guān)系映射集成模塊,Spring框架插入了若干個(gè)
ORM框架,從而提供了ORM的對象關(guān)系工具,其中包括JDO、Hibernate和iBatis
SQL
Map,所有這些都遵從Spring的通用事務(wù)和DAO異常層次結(jié)構(gòu)Spring
Web模塊Web上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文提供了一些面向服務(wù)支持,例如,實(shí)現(xiàn)文件上傳的
multipart請求,也提供了Spring和其它Web框架的集成,比如Struts、WebWork簡化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌pring
MVC框架Spring為構(gòu)建Web應(yīng)用提供了一個(gè)功能全面的MVC框架,通過策略接口,MVC框架成為高度可配置的,容納了大量視圖技術(shù),其中包括JSP、Velocity、Tiles、iText和POI雖然Spring可以很容易地與其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC對控制邏輯和業(yè)務(wù)對象提供了完全的分離Spring簡介Spring框架的系統(tǒng)架構(gòu)Spring框架的主要技術(shù)特性·Spring開發(fā)環(huán)境Spring框架的主要技術(shù)特性采用分層架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)Spring框架有7個(gè)各自相互獨(dú)立的模塊,整個(gè)Spring框架本身是一個(gè)完整的企業(yè)級(jí)開發(fā),開發(fā)者也可以僅使用其中的任何一個(gè)獨(dú)立的組件Spring框架適用于包括J2SE和J2EE的各種不同的應(yīng)用開發(fā)環(huán)境,為開發(fā)者提供了極其靈活的開發(fā)實(shí)現(xiàn),比如
可以采用容器外的開發(fā)和實(shí)現(xiàn),包括單元測試技術(shù)來
簡化容器內(nèi)的項(xiàng)目的開發(fā)過程,提高應(yīng)用系統(tǒng)的開發(fā)
效率·輕量級(jí)的J2EE應(yīng)用開發(fā)框架重量級(jí)容器的組件技術(shù)中,組件必須實(shí)現(xiàn)某個(gè)特定的接口并且在某個(gè)特定的容器內(nèi)執(zhí)行,EJB是重量級(jí)容器組件技術(shù)的典型代表而輕量級(jí)容器的組件技術(shù)中的組件可以是簡單的Java組件類(Plain
Ordinary
Java
Object,POJO),并且不依賴于特定的J2EE應(yīng)用服務(wù)器容器的產(chǎn)品Spring框架使用基本的JavaBean組件類,所開發(fā)的組件不需要其它的外部系統(tǒng)庫,目標(biāo)容器可以使輕量級(jí)的,可以部署在像Tomcat等類型的容器中·一種非侵入式的輕量級(jí)框架Spring框架,允許在應(yīng)用系統(tǒng)中自由選擇和組裝功能模塊,并且不強(qiáng)制要求應(yīng)用中的類必須從Spring的系統(tǒng)
API中的某個(gè)類來繼承或者實(shí)現(xiàn)某個(gè)接口提供和其它框架集成的接口,如與Hibernate、Struts的集成等Spring通過應(yīng)用Java的反射機(jī)制,通過動(dòng)態(tài)調(diào)用的方式來提供各方面的功能,建立核心組間BeanFactory,并配合使用Spring框架中的BeanWrapper和BeanFactory類組件,實(shí)現(xiàn)對象的創(chuàng)建和屬性注入·使用控制反轉(zhuǎn)IoC技術(shù)的容器依賴查找(DependencyLookup),容器提供回調(diào)接口和上下文環(huán)境給組件。EJB和ApacheAvalon都使用這種方式依賴注入(Dependency
Injection),組件不做定位查詢,只提供普通的Java方法讓容器決定依賴關(guān)系,這是目前最流行的IoC類型查找定位操作與應(yīng)用代碼完全無關(guān)
不依賴于容器的API,可以很容易地在任何容器以外使用應(yīng)用對象
不需要特殊的接口,絕大多數(shù)對象可以做到完全不必依賴容器Spring簡介Spring框架的系統(tǒng)架構(gòu)Spring框架的主要技術(shù)特性·Spring開發(fā)環(huán)境Spring開發(fā)環(huán)境Spring的開發(fā)需要編寫xml配置文件組織Bean和切面等,通過配置的方式,可以將程序的各個(gè)部分連接起來程序運(yùn)行時(shí)能夠創(chuàng)建或者初始化所有的對象關(guān)系,因此,程序間的切換,可以只需要修改注釋或
xml配置文件,然后運(yùn)行即可搭建Spring開發(fā)環(huán)境在項(xiàng)目中使用Spring,需要添加Spring支持,添加的方式有兩種:通過Myclipse向?qū)Ш褪止ぬ砑觿?chuàng)建Spring的運(yùn)行環(huán)境,具體的實(shí)現(xiàn)步驟包括創(chuàng)建Web工程,在工程的web.xml文件中添加Spring監(jiān)聽,在新工程中引入庫文件以及添加并配置
Spring的核心庫文件applicationContext.xml使用Myclipse向?qū)砑覵pring支持·打開軟件MyEclipse,單擊File—New—WebProject·創(chuàng)建一個(gè)名為SpringDemo的項(xiàng)目·在工程的web.xml文件中添加Spring監(jiān)聽,配置
web.xml文件,目的是項(xiàng)目啟動(dòng)時(shí)自動(dòng)創(chuàng)建bean工廠并讀取spring配置文件,反射對象注入屬性<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>·在包資源管理器中,右鍵單擊項(xiàng)目名,在彈出的快捷菜單中選擇MyEclipse—Add
SpringCapabilities,打開添加Spring資源對話框·
在增加Spring資源對話框中,選擇Spring2.5
勾選5個(gè)包,分別為Spring
2.5
AOP
Libraries、Spring
2.5
CoreLibraries、Spring
2.5
Persistence
Core
Libraries、Spring
2.5Persistence
JDBC
Libraries和Spring
2.5
Web
Libraries
勾選“Copy
checked
Libraries
contents
to
project
folder(TLDsalways
copies)”·單擊Next·完成Spring文件的添加后,向?qū)г趕rc目錄中新建了Spring的配置文件applicationContext.xmlxmlns:xsi="htt<?xml
version="1.0"
encoding="UTF-8"?><beansxmlns="/schema/beans"p:///2001/XMLSchema-instance"
xmlns:p="/schema/p"xsi:schemaLocation="http:///schema/beans
/schema/beans/spring-beans-2.5.xsd"></beans>手工方式添加Spring支持將相應(yīng)的jar包spring.jar、spring-2.5.5.jar、slf4jlog4j12-1.5.0jar、slf4j
log4j支持包、log4j-1.2.15.jar、slf4j-api-1.5.0.jar等添加到項(xiàng)目的
WebRoot/WEB-INF/lib目錄下在項(xiàng)目文件的src目錄下創(chuàng)建Spring的配置文件
applicationContext.xml編寫HelloWorld類·在項(xiàng)目SpringDemo中,新建HelloWorld類,包名為com.SpringDemopackage
com.SpringDemo;public
class
HelloWorld
{public
void
show(){System.out.println("歡迎Spring!");}}配置applicationContext.xml文件·在文件applicationContext.xml中,添加一個(gè)<bean>節(jié)點(diǎn)<bean
id="hw"
class="com.SpringDemo.HelloWorld"></bean>·class的屬性由“包名+類名”的方式組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公益類項(xiàng)目合同范本
- 雙方解聘合同范本
- 烹飪原料知識(shí)練習(xí)題庫及答案
- 南沙初中食堂承包合同范本
- 臺(tái)灣履行合同范本
- 農(nóng)村包清工合同范本
- 七年級(jí)組工作計(jì)劃
- 七年級(jí)政治教學(xué)工作總結(jié)
- 單位招標(biāo)合同范本
- 單間轉(zhuǎn)租合租合同范本
- 傳統(tǒng)與現(xiàn)代滋補(bǔ)品的營銷變革
- 陳元方年十一時(shí)課件
- 2024解析:第九章固體壓強(qiáng)-講核心(解析版)
- 《公路養(yǎng)護(hù)安全培訓(xùn)》課件
- 宏觀經(jīng)濟(jì)管理學(xué)
- 高校實(shí)訓(xùn)室安全管理培訓(xùn)課件
- 蟾蜍毒抗病毒藥物研發(fā)進(jìn)展
- 2025年中國陪診服務(wù)行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報(bào)告
- 中交一公局土方合同范例
- 靜脈治療相關(guān)血管解剖結(jié)構(gòu)與生理
- 個(gè)體診所醫(yī)師聘用合同范例
評(píng)論
0/150
提交評(píng)論