版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第詳解Spring中Bean的作用域與生命周期目錄一、Bean的作用域二、Bean的生命周期使用代碼演示Bean的生命周期
一、Bean的作用域
通過(guò)Spring容器創(chuàng)建一個(gè)Bean的實(shí)例時(shí),不僅可以完成Bean的實(shí)例化,還可以使用Bean的scope屬性為bean設(shè)置作用域。
語(yǔ)法格式:beanid="別名"scope="作用域"
作用域的種類:(sing)
singleton和prototype區(qū)別:(該兩種比較常用)
①singleton單實(shí)例,prototype多實(shí)例
②設(shè)置scope值是singleton時(shí)候,加載spring配置文件時(shí)候就會(huì)創(chuàng)建單實(shí)例對(duì)象
設(shè)置scope值是prototype時(shí)候,在加載spring配置文件時(shí)候暫時(shí)不會(huì)創(chuàng)建對(duì)象,在調(diào)用getBean方法時(shí)候才創(chuàng)建多實(shí)例對(duì)象
singleton作用域:
//Cat.java
publicclassCat{
privateStringname;
publicvoidsetName(Stringname){
=name;
配置文件beans5.xml
beanid="cat"scope="singleton"
propertyname="name"value="大橘"/property
/bean
測(cè)試:
//Bean的作用域測(cè)試方法
@Test
publicvoidcatTest(){
//1.初始化Spring容器,加載配置文件
ApplicationContextapplicationContext=newClassPathXmlApplicationContext("beans5.xml");
//2.通過(guò)Spring容器獲取Bean的實(shí)例
Catcat1=(Cat)applicationContext.getBean("cat");
Catcat2=(Cat)applicationContext.getBean("cat");
//3.輸出獲取的實(shí)例
System.out.println(cat1);
System.out.println(cat2);
prototype作用域:
將配置文件beans5.xml中的scope屬性改為prototype,再次運(yùn)行測(cè)試:
beanid="cat"scope="prototype"
propertyname="name"value="大橘"/property
/bean
3測(cè)試:
二、Bean的生命周期
Bean從創(chuàng)建到銷毀稱為Bean的生命周期,大體上Bean的生命周期共有七步:
(1)通過(guò)無(wú)參構(gòu)造器創(chuàng)建bean實(shí)例
(2)調(diào)用屬性setter方法為bean的屬性設(shè)置值
(3)把bean實(shí)例傳遞bean后置處理器的方法postProcessBeforeInitialization
(4)調(diào)用bean的初始化的方法(需要配置初始化的方法)
(5)把bean實(shí)例傳遞bean后置處理器的方法postProcessAfterInitialization
(6)獲取使用已經(jīng)創(chuàng)建的bean
(7)當(dāng)容器關(guān)閉時(shí)候,調(diào)用bean的銷毀的方法(需要配置銷毀的方法)
注意:
①初始化方法、銷毀方法都需要在Bean中作為屬性手動(dòng)配置;
②只有singleton作用域的Bean才會(huì)執(zhí)行銷毀方法;
使用代碼演示Bean的生命周期
(1)普通JavaBean:Cat.java
publicclassCat{
privateStringname;
publicvoidsetName(Stringname){
=name;
System.out.println("第二步:調(diào)用屬性setter方法為bean的屬性設(shè)置值");
publicCat(){
System.out.println("第一步;通過(guò)無(wú)參構(gòu)造器創(chuàng)建bean實(shí)例");
//初始化方法(在配置文件中配置實(shí)現(xiàn)調(diào)用)
publicvoidinitMethod(){
System.out.println("第四步:調(diào)用bean的初始化的方法");
//銷毀方法(在配置文件中配置實(shí)現(xiàn)調(diào)用)
publicvoiddestroyMethod(){
System.out.println("第七步:當(dāng)容器關(guān)閉時(shí)候,調(diào)用bean的銷毀的方法");
(2)myBeanPostProcessor實(shí)現(xiàn)BeanPostProcessor接口,實(shí)現(xiàn)后置處理器:myBeanPostProcessor.java
(spring中的AOP就是通過(guò)實(shí)現(xiàn)BeanPostProcessor接口實(shí)現(xiàn)的)
//myBeanPostProcessor實(shí)現(xiàn)BeanPostProcessor接口,實(shí)現(xiàn)后置處理器
publicclassmyBeanPostProcessorimplementsBeanPostProcessor{
@Override
publicObjectpostProcessBeforeInitialization(Objectbean,StringbeanName)throwsBeansException{
System.out.println("第三步:把bean實(shí)例傳遞bean后置處理器的方法");
returnbean;
@Override
publicObjectpostProcessAfterInitialization(Objectbean,StringbeanName)throwsBeansException{
System.out.println("第五步:把bean實(shí)例傳遞bean后置處理器的方法");
returnbean;
(3)配置文件:beans5.xml
!--scope屬性必須設(shè)置為singleton,否則創(chuàng)建的Bean不會(huì)被銷毀--
!--init-method屬性配置初始化方法,destroy-method屬性銷毀方法--
beanid="cat"scope="singleton"init-method="initMethod"destroy-method="destroyMethod"
propertyname="name"value="大橘"/property
/bean
!--配置后置處理器,為當(dāng)前配置文件中的所有bean添加后置處理器的處理--
beanid="myBeanPostProcessor"/bean
(4)測(cè)試
@Test
publicvoidcatTest(){
//1.初始化Spring容器,加載配置文件
ClassPathXmlApplicationContextapplicationContext=newClassPathXmlApplicationContext("beans5.xml");
//2.通過(guò)Sprin
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)消防安全評(píng)估指南
- 安全生產(chǎn)典范企業(yè)講解
- 2025-2026人教版小學(xué)二年級(jí)語(yǔ)文期末測(cè)試卷上
- 結(jié)構(gòu)專業(yè)考試題及答案
- 2025-2026人教版三年級(jí)語(yǔ)文上學(xué)期卷
- 腸道菌群與NAFLD肝硬化PHG:MDT調(diào)節(jié)策略
- 2025-2026一年級(jí)語(yǔ)文上學(xué)期期末測(cè)試卷
- 腸狹窄術(shù)后腹腔感染的處理策略
- 腸梗阻合并糖尿病患者的血糖管理策略
- 衛(wèi)生院執(zhí)業(yè)監(jiān)督管理制度
- 安全生產(chǎn)目標(biāo)及考核制度
- (2026版)患者十大安全目標(biāo)(2篇)
- 2026年北大拉丁語(yǔ)標(biāo)準(zhǔn)考試試題
- 臨床護(hù)理操作流程禮儀規(guī)范
- 2025年酒店總經(jīng)理年度工作總結(jié)暨戰(zhàn)略規(guī)劃
- 空氣栓塞課件教學(xué)
- 2025年國(guó)家市場(chǎng)監(jiān)管總局公開(kāi)遴選公務(wù)員面試題及答案
- 肌骨康復(fù)腰椎課件
- 患者身份識(shí)別管理標(biāo)準(zhǔn)
- 2025年10月自考04184線性代數(shù)經(jīng)管類試題及答案含評(píng)分參考
- 2025年勞動(dòng)保障協(xié)理員三級(jí)技能試題及答案
評(píng)論
0/150
提交評(píng)論