Bean的作用域介紹(Singleton與prototype)_第1頁
Bean的作用域介紹(Singleton與prototype)_第2頁
Bean的作用域介紹(Singleton與prototype)_第3頁
Bean的作用域介紹(Singleton與prototype)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、Bean的作用域介紹(Singleton與prototype)SpringBean作用域介紹:singleton:Springloc容器只會創(chuàng)建該Bean的唯一實例,所有的請求和引用都只使用這個實例Property:每次請求都創(chuàng)建一個新實例request:在一次Http請求中,容器會返回該Bean的同一個實例,而對于不同的用戶請求,會返回不同的實例。需要注意的是,該作用域僅在基于Web的SpringApplicationcontext情形下有效,以下的session和globalSession也是如此session:同上,唯一的區(qū)別是請求的作用域變?yōu)榱藄essionglobalsession:

2、全局的HttpSession中,容器會返回該bean的同一個實例,典型為在是使用portletcontext的時候有效(這個概念本人也不懂)注意:如果要用到request,session,globalsession時需要配置servlet2.4及以上:在web.xml中添加:<listener><listener-class>org.springframework.web.context.scope.RequestContextListener/></listener>servlet2.4以下:需要配置一個過濾器<filter>vfilte

3、r-name>XXXX</filter-name>vfilter-class>org.springframework.web.filter.RequestContextFilter</filter-class><filter-mapping><filter-name>XXXX</filter-name><url-pattern>/*</url-pattern></filter-mapping>另外,從2.0開始,可以自己定義作用域,但需要實現(xiàn)scope,并重寫get和remove方法特別

4、要引起注意的是:一般情況下前面兩種作用域是夠用的,但如果有這樣一種情況:singleton類型的bean引用一個prototype的bean時會出現(xiàn)問題,因為singleton只初始化一次,但prototype每請求一次都會有一個新的對象,但prototype類型的bean是singleton類型bean的一個屬性,理所當(dāng)然不可能有新prototpye的bean產(chǎn)生,與我們的要求不符解決方法:1.放棄Ioc,這與設(shè)計初衷不符,并代碼間會有耦合2,Lookup方法注入,推薦但在用Lookup方法注入時也需要注意一點:需要在引用的Bean中定一個一個抽象地返回被引用對象的方法packagecom.

5、huyong.Iookup;importjava.util.Calendar;/*authorHuYongEmail:yate7571*/publicclassCurrentTimeprivateCalendarnow=Calendar.getlnstance();publicvoidprintCurrentTime()System.out.println("CurrentTime:"+now.getTime();packagecom.huyong.lookup;/*authorHuYongEmail:yate7571*/publicabstractclassLookupB

6、eanprivateCurrentTimecurrentTime;publicCurrentTimegetCurrentTime()returncurrentTime;publicvoidsetCurrentTime(CurrentTimecurrentTime)this.currentTime=currentTime;publicabstractCurrentTimecreateCurrentTime();<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http:/www.s

7、/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beanshttp:/www.springframework.Org/schema/beans/spring-beans-2.0.xsd">vbeanid="currentTime"class="com.huyong.lookup.

8、CurrentTime"scope="prototype"></bean>vbeanid="lookupBean"class="com.huyong.lookup.LookupBean"scope="singleton">vlookup-methodname="createCurrentTime"bean="currentTime"/>vpropertyname="currentTime"ref="curr

9、entTime"></property></bean></beans>MainTest:packagecom.huyong.lookup;.BeanFactory;.xml.XmlBeanFactory;importorg.springframework.beans.factoryimportorg.springframework.beans.factoryimportorg.springframework.core.io.ClassPathResource;*authorHuYongEmail:yate7571*/publicclassLo

10、okupMain* paramargs* throwsException*/publicstaticvoidmain(Stringargs)throwsExceptionClassPathResourceresource=newClassPathResource("applicationContext.xml");BeanFactoryfactory=newXmlBeanFactory(resource);LookupBeanlookupBean=(LookupBean)factory.getBean("lookupBean");System.out.p

11、rintln("firsttime");System.out.println("getCurrentTime:");lookupBean.getCurrentTime().printCurrentTime();System.out.println("createCurrentTime:");lookupBean.createCurrentTime().printCurrentTime();Thread.sleep(12345);System.out.println("secondtime");System.out.println("getCurrentTime:");LookupBeanlookupBean02=(LookupBean)factory.getBean("lookupBean");lookupBean02.getCurrentTime().prin

溫馨提示

  • 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

提交評論