Spring的核心容器PPT課件_第1頁
Spring的核心容器PPT課件_第2頁
Spring的核心容器PPT課件_第3頁
Spring的核心容器PPT課件_第4頁
Spring的核心容器PPT課件_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.,1,Spring的核心容器,.,2,在Spring中,兩個最基本最重要的包是 org.springframework.beans org.springframework.context 這兩個包中的代碼為Spring的反向控制 特性(也叫作依賴注射)提供了基礎(chǔ)。 BeanFactory提供了一種先進的配置機制來管理任何種類bean(對象),這種配置機制考慮到任何一種可能的存儲方式。 ApplicationContext建立在BeanFactory之上,并增加了其他的功能,比如更容易同Spring AOP特性整合, 消息資源處理(用于國際化),事件傳遞,以聲明的方式創(chuàng)建Application

2、Context, 可選的父上下文和與應(yīng)用層相關(guān)的上下文(比如WebApplicationContext),以及其他方面的增強。,.,3,singleton 如果一個bean是singleton形態(tài)的,那么就只有一個共享的實例存在, 所有和這個bean定義的id符合的bean請求都會返回這個唯一的、特定的實例。 default is singleton,.,4,Ref ,.,5,對null的處理, null ,.,6,Depends-on, bean id=“date”.,.,7,Bean的生命周期,Bean的定義 Bean的初始化 Bean的調(diào)用 Bean的銷毀,.,8,The definit

3、ion of bean HelloWorld ,.,9,Bean的初始化,1、在配置文檔中通過指定init-method 屬性來完成 在Bean的類中實現(xiàn)一個初始化Bean屬性的方法,如init(),如: public class HelloWorld public String msg=null; public Date date=null; public void init() msg=HelloWorld; date=new Date(); 然后,在配置文件中設(shè)置init-mothod屬性: ,.,10,Bean的初始化,實現(xiàn) org.springframwork.beans.facto

4、ry.InitializingBean接口 Bean實現(xiàn)InitializingBean接口,并且增加 afterPropertiesSet() 方法: public class HelloWorld implement InitializingBean public String msg=null; public Date date=null; public void afterPropertiesSet() msg=向全世界問好!; date=new Date(); 那么,當這個Bean的所有屬性被Spring的BeanFactory設(shè)置完后,會自動調(diào)用afterPropertiesSet

5、()方法對Bean進行初始化,于是,配置文件就不用指定 init-method屬性了。,.,11,Bean的調(diào)用,1、使用BeanWrapper HelloWorld hw=new HelloWorld(); BeanWrapper bw=new BeanWrapperImpl(hw); bw.setPropertyvalue(msg,HelloWorld); system.out.println(bw.getPropertyCalue(msg); 2、使用BeanFactory InputStream is=new FileInputStream(config.xml); XmlBeanFa

6、ctory factory=new XmlBeanFactory(is); HelloWorld hw=(HelloWorld) factory.getBean(HelloWorld); system.out.println(hw.getMsg(); 3、使用ApplicationConttext ApplicationContext actx=new FleSystemXmlApplicationContext(config.xml); HelloWorld hw=(HelloWorld) actx.getBean(HelloWorld); System.out.println(hw.get

7、Msg();,.,12,Bean的銷毀,1、使用配置文件中的 destory-method 屬性 與初始化屬性 init-methods類似,在Bean的類中實現(xiàn)一個撤銷Bean的方法,然后在配置文件中通過 destory-method指定,那么當bean銷毀時,Spring將自動調(diào)用指定的銷毀方法。Public void cleanup(); 2、實現(xiàn) org.springframwork.bean.factory.DisposebleBean接口 如果實現(xiàn)了DisposebleBean接口,那么Spring將自動調(diào)用bean中的Destory方法進行銷毀,所以,Bean中必須提供Desto

8、ry方法。 Public void destroy();,.,13,bean的自動裝配,byName模式 byType模式 constructor模式 autodetect模式 No模式,.,14,byName模式,為此Hello bean設(shè)置date屬性的通用方式是在配置文件中指定 spring可以通過bean的屬性autowire指定bean的自動裝配類型,從而減少制定屬性的需要 Hello bean中包含一個變量date(Data類型),autowire=byName,則spring就會查找一個叫data的bean來設(shè)置date屬性,.,15,byType模式,byType模式 如果配置

9、文件中正好有一個bean,其類型與date的屬性相匹配,則就自動裝置。多于一個date類型bean是,就拋出異常 ,.,16,constructor模式,Hello bean 中增加一個構(gòu)造函數(shù),其中有個參數(shù)date,則spring就會根據(jù)參數(shù)查找合適類型的bean定義,然后用它來設(shè)置構(gòu)造函數(shù)的參數(shù)值 ,.,17,autodetect模式,通過對bean檢查類的內(nèi)部來選擇constructor或者byType模式,找到constructor就用constructor,否則用byType,.,18,no模式,即常用的顯示制定模式。 推薦此種方式,bean的依賴關(guān)系明顯,.,19,Ref(loca

10、l,bean,parant),1 、用 local 屬性指定目標 bean 可以利用 xml 解析器的能力在同一個文件中驗證 xml id 引用 . 如果在同一個文件中沒有匹 配的元素 ,xml 解析器就會產(chǎn)生一個 error, 所以如果目標 bean 在同一個 xml 文件中 , 那么用 local 形式是最好的選擇 . 2 、可以這么說, 提供了如下幾方面的屬性 : 1)bean: 在當前 Spring XML 配置文件中,或者在同一 BeanFactory(ApplicationContext) 中的其他 JavaBean 中 . 2)local: 在當前 Spring XML 配置文件中 . 其依賴的 JavaBean 必須存在于當前 Spring XML 培植文件中 . 如果借助 于 Spring IDE, 則在編譯期可以對其依賴的 JavaBean 進行驗證?;?local 方式,開發(fā)者能夠使用到 XML 本身提供 的優(yōu)勢,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論