Spring總結(jié)篇(3):bean生命周期

1.利用ApplicationContext來獲取bean對(duì)象桶蛔,bean的生命周期

當(dāng)bean被載入容器時(shí)漫谷,他的生命周期就開始了。

(1)實(shí)例化

當(dāng)我們加載bean.xml文件時(shí)抖剿,就開始實(shí)例化了,實(shí)例化到內(nèi)存斩郎,前提是scope=singleton)---當(dāng)實(shí)例化時(shí),構(gòu)造方法先被調(diào)用)

(2)設(shè)置屬性(前提是要有一個(gè)對(duì)應(yīng)的set方法)

調(diào)用set方法設(shè)置屬性

(3)調(diào)用BeanNameAware的setBeanName()方法

如果你實(shí)現(xiàn)了BeanNameAware接口缩宜,則可以通過setBeanName來獲取bean的id

(4)調(diào)用BeanFactoryAware的setBeanFactory()方法

該方法可以傳遞beanFactory,如果你實(shí)現(xiàn)BeanNameAware接口妓布,則可以獲取beanFactory

(5)調(diào)用ApplicationContextAware的setApplicationContext()方法

如果你實(shí)現(xiàn)ApplicationContextAware接口宋梧,則可以得到ApplicationContext

(6)若BeanPostProcessor(后置處理器,具體介紹在下面)和bean關(guān)聯(lián)后(關(guān)聯(lián):先建一個(gè)類myBeanPostProcessor來實(shí)現(xiàn)BeanPostProcessor捂龄,再在beans.xml配置一下)

postProcessBeforeInitialzation()方法先被調(diào)用。(預(yù)初始化方法)

(7)若你實(shí)現(xiàn)了InitializingBean接口倦沧,則會(huì)調(diào)用afterPropertiesSet

(8)調(diào)用定制的初始化方法唇撬,在beans.xml文件bean中寫

(9)調(diào)用后初始化方法postProcessAtfterInitialzation()

(10)使用我們的bean

(11)容器關(guān)閉

(12)調(diào)用DisposableBean接口的destory()方法

包括關(guān)閉數(shù)據(jù)連接、socket展融、文件流釋放bean占用的資源窖认,不習(xí)慣用

(13)第12步的方法少用,經(jīng)常用自己定制的銷毀方法告希,在beans.xml中設(shè)置

原理圖:


2.關(guān)于BeanPostProcessor(后置處理器)

--在用后置處理器時(shí)扑浸,我們可以建一個(gè)類myBeanPostProcessor來實(shí)現(xiàn)BeanPostProcessor,其中有兩個(gè)方法before暂雹、after

--在beans.xml配置一下首装,就會(huì)被自動(dòng)調(diào)用,先是before()再是after()

--BeanPostProcessor有點(diǎn)類似于web里的filter過濾器

--需求應(yīng)用:1.記錄每個(gè)對(duì)象被實(shí)例化的時(shí)間

?? ??? ??? ??? ?? ??2.過濾每個(gè)調(diào)用對(duì)象的ip

?? ??? ??? ??? ?? ? 3.給所有對(duì)象添加屬性

--這些應(yīng)用體現(xiàn)了AOP編程(面向切面編程仙逻,針對(duì)所有對(duì)象編程)


3.小結(jié)

實(shí)際開發(fā)中沒用到這么多過程,則常用的過程為:1>2>6>9>10>11>13


4.通過bean工廠來獲取bean涧尿,bean的生命周期

1>2>3>4>7>8>10>11>12>13


5.代碼實(shí)現(xiàn)

userService

userService

myBeanPostProcessor

myBeanPostProcessor

beans.xml

beans.xml

testBean

testBean

6.結(jié)果現(xiàn)象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末系奉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子姑廉,更是在濱河造成了極大的恐慌缺亮,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桥言,死亡現(xiàn)場(chǎng)離奇詭異萌踱,居然都是意外死亡葵礼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門并鸵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸳粉,“玉大人,你說我怎么就攤上這事园担〗焯福” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵弯汰,是天一觀的道長(zhǎng)艰山。 經(jīng)常有香客問我,道長(zhǎng)咏闪,這世上最難降的妖魔是什么曙搬? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮汤踏,結(jié)果婚禮上织鲸,老公的妹妹穿的比我還像新娘。我一直安慰自己溪胶,他們只是感情好搂擦,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哗脖,像睡著了一般瀑踢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上才避,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天橱夭,我揣著相機(jī)與錄音,去河邊找鬼桑逝。 笑死棘劣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的楞遏。 我是一名探鬼主播茬暇,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼寡喝!你這毒婦竟也來了糙俗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤预鬓,失蹤者是張志新(化名)和其女友劉穎巧骚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡劈彪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年竣蹦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粉臊。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡草添,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扼仲,到底是詐尸還是另有隱情,我是刑警寧澤抄淑,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布屠凶,位于F島的核電站,受9級(jí)特大地震影響肆资,放射性物質(zhì)發(fā)生泄漏矗愧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一郑原、第九天 我趴在偏房一處隱蔽的房頂上張望唉韭。 院中可真熱鬧,春花似錦犯犁、人聲如沸属愤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽住诸。三九已至,卻和暖如春涣澡,著一層夾襖步出監(jiān)牢的瞬間贱呐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工入桂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奄薇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓抗愁,卻偏偏與公主長(zhǎng)得像馁蒂,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驹愚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 本來是準(zhǔn)備看一看Spring源碼的远搪。然后在知乎上看到來一個(gè)帖子,說有一群**自己連Spring官方文檔都沒有完全讀...
    此魚不得水閱讀 6,927評(píng)論 4 21
  • 在 Spring 中逢捺,我們可以從兩個(gè)層面定義 Bean 的生命周期: Bean 的作用范圍谁鳍。 實(shí)例化 Bean 時(shí)...
    deniro閱讀 2,602評(píng)論 0 8
  • Spring容器高層視圖 Spring 啟動(dòng)時(shí)讀取應(yīng)用程序提供的Bean配置信息,并在Spring容器中生成一份相...
    Theriseof閱讀 2,799評(píng)論 1 24
  • 什么是Spring Spring是一個(gè)開源的Java EE開發(fā)框架。Spring框架的核心功能可以應(yīng)用在任何Jav...
    jemmm閱讀 16,445評(píng)論 1 133
  • Scrapy倘潜,Python開發(fā)的一個(gè)快速,高層次的屏幕抓取和web抓取框架绷柒,用于抓取web站點(diǎn)并從頁面中提取結(jié)構(gòu)化...
    Julianlee107閱讀 320評(píng)論 0 0