【ch08】Spring框架開發(fā)技術(shù)_第1頁
【ch08】Spring框架開發(fā)技術(shù)_第2頁
【ch08】Spring框架開發(fā)技術(shù)_第3頁
【ch08】Spring框架開發(fā)技術(shù)_第4頁
【ch08】Spring框架開發(fā)技術(shù)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Spring框架開發(fā)技術(shù)“普通高等教育“十三五”規(guī)劃教材高等學(xué)校計算機(jī)規(guī)劃教材JavaEE輕量級框架開發(fā)實用教程第八章01第一個小節(jié)模塊之上,SpringCore模塊定義了創(chuàng)建、配置和管理Bean的方式,Spring框架是一個分層架構(gòu),由7個定義好的模塊組成。其中的6個模塊構(gòu)建在SpringCore組成Spring框架的每個模塊都可以單獨存在,或者與其他一個或多個模塊聯(lián)合實現(xiàn)。每個模塊的功能如下。Spring框架開發(fā)技術(shù)(1)SpringCore:SpringCore提供Spring框架的基本功能。SpringCore的主要組件是BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(IOC)模式將應(yīng)用程序的配置和依賴性規(guī)范與實際的應(yīng)用程序代碼分開。(2)SpringContext:SpringContext是一個配置文件,向Spring框架提供上下文信息。SpringContext包括企業(yè)服務(wù),例如JNDKJavaNamingandDirectoryInterface,Java命名和目錄接口)、EJB(EnterpriseJavaBean,Java企業(yè)Bean)、電子郵件、國際化、校驗和調(diào)度功能。(3)SpringAOP:因為通過配置管理特性,SpringAOP直接將面向方面的編程功能集成到Spring框架中,所以可以很容易地使Spring框架管理的任何對象支持AOP。SpringAOP為基于Spring的應(yīng)用程序中的對象提供事務(wù)管理服務(wù)。通過使用SpringAOP,不用依賴EJB組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。(4)SpringDAO:JDBCDAO(DataAccessObject,數(shù)據(jù)訪問對象)抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯誤消息。異常層次結(jié)構(gòu)簡化了錯誤處理,并且大大降低了需要編寫的異常代碼數(shù)量。SpringDAO的面向JDBC的異常遵從通用的DAO異常層次結(jié)構(gòu)。Spring框架開發(fā)技術(shù)(5)SpringORM:Spring框架插入了若干個Object/RelationMapping框架,從而提供了ORM的對象關(guān)系映射工具,其中包括JDO、Hibernate和iBatisSQLMap。所有這些框架都遵從Spring的通用事務(wù)和DAO異常層次結(jié)構(gòu)。(6)SpringWeb:SpringWeb建立在SpringContext模塊之上,為基于Web的應(yīng)用程序提供了上下文。因此,Spring框架支持與JakartaStruts的集成。SpringWeb還簡化了處理大部分請求及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌?7)SpringWebMVC:SpringWebMVC是一個全功能的構(gòu)建Web應(yīng)用程序的MVC實現(xiàn)模塊。通過策略接口,SpringWebMVC變成高度可配置的,SpringWebMVC容納了大量視圖技術(shù),其中包括JSP、Velocity^Tiles>iText和POI。Spring框架的功能可以用在任何J2EE服務(wù)器中,大多數(shù)功能也適用于不受管理的環(huán)境。Spring的核心要點是:支持不綁定到特定J2EE服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對象。毫無疑問,這樣的對象可以在不同的J2EE環(huán)境(Web或EJB)、獨立應(yīng)用程序、測試環(huán)境之間重用。Spring框架開發(fā)技術(shù)02Spring開發(fā)準(zhǔn)備Spring框架開發(fā)技術(shù)包名作用spring-core-3.2.0.RELEASESpring框架核心jar包spring-beans-3.2.0.RELEASESpring框架核心jar包,負(fù)責(zé)管理Bean對象sprmg-context-3.2.0.RELEASE上下文支持jar包spring-context-support-3.2.0.RELEASE

spring-aop-3.2.0.RELEASE面向切面編程使用的jar包spring-aspects-3.2.0.RELEASE

spring-expression-3.2.0.RELEASESpringEL表達(dá)式相關(guān)jar包spring-jdbc-3.2.0.RELEASE數(shù)據(jù)訪問層框架需要的支持jar包。用于處理JDBC超鏈接,0RM映射框架支持和事務(wù)管理spring-orm-3.2.0.RELEASE

spring-tx-3.2.0.RELEASE

spring-web-3.2.0.RELEASE網(wǎng)絡(luò)支持jar包。可以使用Spring框架的支持開發(fā)Servlet代碼spring-webmvc-3.2.0.RELEASESpringMVC插件框架,是一個MVC控制層框架spring-instrument-3.2.0.RELEASE插件開發(fā)的jar包spring-instrument-tomcat-3.2.0.RELEASE

spring-jms-3.2.0.RELEASEJavaMessageService輔助jar包學(xué)習(xí)ActiveMQ時需要使用的jar包spring-oxm-3.2.0.RELEASEObjectXMLMapping映射jar包,類似于0RMspring-test-3.2.0.RELEASESpring提供的測試插件,類似于JUnitspring-webmvc-portlet-4.1.6.RELEASE.jar使用Portlet設(shè)計思想,是MVC控制層框架,類似于SpringMVC1.導(dǎo)入jar包。前10個jar包是Spring編程必須使用的,后面的那些jar包都是可選的。另外,如果用Spring進(jìn)行注解開發(fā),則還需要另一個名為commons-logging-1.1.1.jar的jai?包。2.編寫JavaBean類在項目chapter8_l的sic文件夾下創(chuàng)建包com.hkd.bean,在該包下創(chuàng)建Dog類程序說明:注意,一定要添加setter/getter方法。3.編寫工廠文件applicationContext.xmlSpring框架開發(fā)技術(shù)Spring框架開發(fā)技術(shù)010203(1)id:—個Bean可以通過一個id屬性唯一地指定和引用,如果Spring配置文件中有兩個以上相同的id,則會報id沖突異常錯誤。(2)class;指定這個Bean所關(guān)聯(lián)的類是哪個類,需要使用全類名。(3)scope:Bean的作用域有兩種(singleton和prototype)0如果一個Bean是singleton形態(tài)的,那么就只存在一個共享的實例,所有和這個Bean定義的id符合的Bean請求都會返回這個唯一的、特定的實例。如果Bean以prototype模式部署,則對這個Bean的每次請求都創(chuàng)建一個新的Bean實例。在Spring工廠文件中,Beans默認(rèn)被部署為singleton模式。Spring框架開發(fā)技術(shù)程序說明:在工廠文件中,Bean常用的屬性有如下三個。4.編寫測試類進(jìn)行測試在項目chapter8_l的src文件夾下創(chuàng)建包com.hkd.test,在該包下創(chuàng)建TestSpring類,在該類中編寫測試函數(shù)testSpringO,代碼如下:至此,Spring的開發(fā)環(huán)境搭建完成??梢钥吹剑赟pring環(huán)境下,對象的創(chuàng)建和測試與傳統(tǒng)方式是不同的。在傳統(tǒng)方式下,對象必須經(jīng)過創(chuàng)建初始化才可被使用;而在Spring環(huán)境下,對象的創(chuàng)建是由工廠文件完成的,使用時只需要從工廠文件獲取即可,這就是Spring中的一個非常重要的思想:IOC(InversionofControl,控制反轉(zhuǎn),也縮寫為IoC)0關(guān)于IOC,將在8.3節(jié)中詳細(xì)介紹。另外,在上面的測試程序中用到了BeanFactory接口,該接口及其子接口Applicationcontext是Spring框架中非常重要的兩個接口。Spring使用BeanFactory或Applicationcontext接口來實例化、配置和管理Bean。下面將對這兩個接口進(jìn)行介紹。Spring框架開發(fā)技術(shù)BeanFactory接口和Applicationcontext接口1.BeanFactory接口BeanFactory是I0C容器的核心接口,它定義了I0C的基本功能。BeanFactory意為Bean工廠,即用來創(chuàng)建Bean的工廠,實際上是實例化、配置和管理眾多Bean的容器。這里的Bean和之前定義的標(biāo)準(zhǔn)JavaBean有些不同。標(biāo)準(zhǔn)JavaBean需要符合一定的規(guī)范,而這里的Bean的范圍更大,在這里凡是可以被Spring實例化管理的Java類都可以稱為Bean。這些Bean通常會彼此合作,因此它們之間會產(chǎn)生依賴。BeanFactory使用的配置數(shù)據(jù)可以反映在這些依賴關(guān)系中。一個BeanFactory可以用接口org.springframework.beans.factory.BeanFactory表示,這個接口有多個實現(xiàn),最簡單的BeanFactory實現(xiàn)方式是通過org.springframework.beans.factoiy.xml.XmlBeanFactory類來實例化。目前,比較常用的方式是通過org.springframework.context.support.ClassPathXmlApplicationContext來實例化。參考代碼如下所示:BeanFactoryfactory=newClassPathXmlApplicationContext(napplicationContext.xml");Spring框架開發(fā)技術(shù)BeanFactory接口和Applicationcontext接口在大多數(shù)情況下,幾乎所有被BeanFactory管理的用戶代碼都不需要知道BeanFactory的存在,因為BeanFactory的實例化通常是由Spring框架完成的。例如,在Web層會提供支持代碼,在JavaEEWeb應(yīng)用啟動過程中自動載入一個SpringApplicationcontext0BeanFactory接口的主要方法為getBean(StringbeanName),該方法根據(jù)Bean名稱從容器返回對應(yīng)的Beano在8.2.1節(jié)的測試程序中用到了這個方法,代碼如下:Spring框架開發(fā)技術(shù)Dogdog=(Dog)factory.getBean("dog");Spring框架開發(fā)技術(shù)因此,ApplicationContext由BeanFactory派生而來,它繼承了BeanFactory的基本功能,提供了更多面向?qū)嶋H應(yīng)用的功能。在BeanFactory中,很多功能需要以編程的方式實現(xiàn),而在ApplicationContext中則可以通過配置實現(xiàn)。Spring框架開發(fā)技術(shù)01020304(1)MessageSource,提供國際化的消息訪問。(3)事件傳播特性,即支持AOP特性。(4)載入多個(有繼承關(guān)系)上下文,使得每個上下文都專注于一個特定的層次,比如應(yīng)用的Web層。(2)資源訪問,如URL和文件。03控制反轉(zhuǎn)(IOC)和依賴注入(DI)控制反轉(zhuǎn)和依賴注入概述控制反轉(zhuǎn)(InversionofControl,IOC)和依賴注入(DependencyInjection,DI)實際上是同一個概念。在傳統(tǒng)的程序設(shè)計中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例,而在控制反轉(zhuǎn)或依賴注入的定義中,調(diào)用者不負(fù)責(zé)被調(diào)用者的實例創(chuàng)建工作,該工作由Spring框架中的容器來負(fù)責(zé),它通過開發(fā)者的配置來判斷實例的類型,創(chuàng)建后再注入調(diào)用者。由于Spring容器負(fù)責(zé)創(chuàng)建被調(diào)用者實例,實例創(chuàng)建后又負(fù)責(zé)將該實例注入調(diào)用者,因此稱為依賴注入;而被調(diào)用者的實例創(chuàng)建工作不再由調(diào)用者來創(chuàng)建而是由Spring來創(chuàng)建,因此稱為控制反轉(zhuǎn)??刂品崔D(zhuǎn)和依賴注入對于初學(xué)者來說是不容易理解的,為了便于讀者理解,我們用通俗易懂的語言來解釋控制反轉(zhuǎn)和依賴注入。控制反轉(zhuǎn)指將創(chuàng)建對象的過程或創(chuàng)建對象的權(quán)限交給Spring框架來進(jìn)行處理,程序員不必以新建對象的方式來手動創(chuàng)建JavaBean,這個過程與傳統(tǒng)的創(chuàng)建過程不一樣,因此稱為控制反轉(zhuǎn)。依賴注入指使用Spring框架為JavaBean的屬性賦值的過程??梢赃@樣理解:控制反轉(zhuǎn)是用來創(chuàng)建對象的,依賴注入是對創(chuàng)建后的對象的屬性進(jìn)行賦值的。因此,控制反轉(zhuǎn)和依賴注入解決的都是Spring環(huán)境下對象的創(chuàng)建問題,只是解決問題的維度不同而已。Spring框架開發(fā)技術(shù)依賴注入的三種方式使用屬性setter方法注入即通過setter方法注入Bean的屬性值或依賴對象。由于屬性setter方法注入方式具有可選擇性和靈活性高的優(yōu)點,因此屬性注入是在實際應(yīng)用中最常釆用的注入方式。屬性注入要求Bean提供一個無參數(shù)的默認(rèn)構(gòu)造函數(shù),并為需要注入的屬性提供對應(yīng)的setter方法。Spring先調(diào)用Bean的默認(rèn)構(gòu)造函數(shù)實例化Bean對象,然后通過反射的方式調(diào)用setter方法注入屬性值。如果從注入數(shù)據(jù)的類型角度來分類,則屬性setter方法注入可以分為基本類型數(shù)據(jù)注入(所謂基本類型數(shù)據(jù)指的是整型、浮點型、字符型、布爾型數(shù)據(jù))、對象類型數(shù)據(jù)注入,以及各種集合類型數(shù)據(jù)注入。下面通過例子分別對這些數(shù)據(jù)的注入進(jìn)行詳細(xì)介紹。使用屬性setter方法注入Spring框架開發(fā)技術(shù)Spring框架開發(fā)技術(shù)構(gòu)造方法注入是除setter方法注入外的另一種常用的注入方式,它保證一些必要的屬性在Bean實例化時就得到設(shè)置,并且確保Bean實例在實例化后就可以使用。使用構(gòu)造方法注入時需要注意:(1)在類中,不需要為屬性設(shè)置setter方法,但是需要生成該類帶參數(shù)的構(gòu)造方法。(2)在配置文件中配置該類的Bean,并配置構(gòu)造器,在配置構(gòu)造器中用到了<constructor-arg>標(biāo)簽,該標(biāo)簽有以下四個屬性。①index:索引,指定注入是第幾個屬性,從0開始。②type:指該屬性所對應(yīng)的類型。③ref:指引用的依賴對象。④value:當(dāng)注入的不是依賴對象,而是基本數(shù)據(jù)類型時,則用valueo從<constructor-arg>標(biāo)簽的這些屬性可以看出,利用構(gòu)造方法進(jìn)行注入時既可以根據(jù)屬性的類型進(jìn)行注入,也可以根據(jù)屬性的索引進(jìn)行注入。因為屬性的類型有可能相同,而屬性的索引是唯一的,所以根據(jù)屬性的索引進(jìn)行注入的方式比較常用。使用構(gòu)造方法注入Spring框架開發(fā)技術(shù)注解方式注入是一種非常高效的開發(fā)方式,使用注解方式需要注意以下兩個問題。1)注解標(biāo)簽的使用注解方式注入的注解標(biāo)簽主要分為兩類:一類用于注解JavaBean,另一類用于注入數(shù)據(jù)。下面對這兩類標(biāo)簽分別進(jìn)行介紹。(1)用于注解JavaBean的注解標(biāo)簽用于注解JavaBean的注解標(biāo)簽需要在類的定義上進(jìn)行注解,主要有如表8-2所示的4個。(2)用于注入數(shù)據(jù)的注解標(biāo)簽用于注入數(shù)據(jù)的注解標(biāo)簽需要在類的屬性或?qū)傩缘膕etter方法上進(jìn)行注解,如表8-3所示。2)在工廠文件中進(jìn)行相應(yīng)的配置在工廠文件中首先需要對頭文件進(jìn)行修改,加入支持注解方式的配置文件:使用注解方式注入Spring框架開發(fā)技術(shù)Spring框架開發(fā)技術(shù)注解標(biāo)簽作用?Component該標(biāo)簽泛指所標(biāo)記的類是組件,Spring掃描注解配置時,會標(biāo)記這些類要生成Bean?Service該標(biāo)簽所標(biāo)記的類是Service層類,Spring掃描注解配置時,會標(biāo)記這些類要生成Bean?Controller該標(biāo)簽所標(biāo)記的類是Controller層類,Spring掃描注解配置時,會標(biāo)記這些類要生成Bean?Repository該標(biāo)簽所標(biāo)記的類是數(shù)據(jù)持久層類,Spring掃描注解配置時,會標(biāo)記這些類要生成Bean注解標(biāo)簽作用@Value實現(xiàn)基本類型數(shù)據(jù)的注入@Autowired實現(xiàn)自動注入,自動從Spring的上下文找到合適的Bean來注入回Qualifier

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論