Session 1 初識(shí)Spring

一些想法

? ? ? ?雖然說(shuō)接觸spring已經(jīng)這么長(zhǎng)時(shí)間了蜂挪,不管大大小小的項(xiàng)目基本都用到了spring献汗,雖然說(shuō)到spring大家都會(huì)想到什么aop和ioc(di) 蟀伸,但是只是知道spring主要是由這兩個(gè)方面組成,但實(shí)際用起來(lái)耳高,也只是一些注解什么的,也沒(méi)有深入的去了解他的機(jī)制是什么蚂子,所以萌庆,最近決定要好好捋一捋spring,因?yàn)殡m然每天都在用沙咏,但是還是覺(jué)得少了點(diǎn)什么辨图,so,廢話不多說(shuō)肢藐,let`s go故河。

一 ioc和aop

1.1 ioc

竟然學(xué)到spring那還是要簡(jiǎn)單了解一下ioc和aop的,首先說(shuō)一下ioc(di)吆豹,即控制反轉(zhuǎn)鱼的,或者是依賴注入,假設(shè)我們有一個(gè)騎士痘煤,和一個(gè)殺boss的任務(wù)

```

/**

* 這是一個(gè)只能殺boss的騎士 實(shí)現(xiàn)了knight的接口

*/

public class KillTheBossKnightimplements Knight{

private KillTheTimokillTheTimo;

? ? public KillTheBossKnight(){

this.killTheTimo =new KillTheTimo();

? ? }

@Override

? ? public void doTheJob() {

System.out.println("殺死了一個(gè)提莫大魔王");

? ? }

public KillTheTimogetKillTheTimo() {

return killTheTimo;

? ? }

public void setKillTheTimo(KillTheTimo killTheTimo) {

this.killTheTimo = killTheTimo;

? ? }

```

可以看到要想讓騎士完成殺死提莫的任務(wù)凑阶,就需要將這個(gè)任務(wù)通過(guò)騎士的構(gòu)造函數(shù)注入,這樣這兩個(gè)類就緊耦合在一起衷快,將這個(gè)具體的任務(wù)和這個(gè)騎士緊緊的耦合在了一起宙橱,那如果這個(gè)其實(shí)要去做其他任務(wù)呢?這還需要修改他的構(gòu)造,這樣的代碼就很不漂亮师郑,因?yàn)轳詈隙仍礁吆哂拢笃诰S護(hù)的成本就越高,所以我們可以通過(guò)另外一種方式來(lái)給來(lái)給騎士下發(fā)任務(wù)呕乎。

接下來(lái)有請(qǐng)我們勇敢的騎士上場(chǎng)

```

/**

* 沒(méi)有將具體的操作交給這個(gè)騎士积担,而只是給了他一個(gè)任務(wù)

*/

public class BraveKnight {

public Jobjob;

? ? public BraveKnight(Job job){

this.job = job;

? ? }

public void doTheJob(){

job.doTheJob();

? ? }

}

```

從這里可以看出,這個(gè)騎士只是在構(gòu)造里面?zhèn)魅肓艘粋€(gè)Job 猬仁,具體是什么Job他并不知道帝璧,所以這就是di的意義所在,這個(gè)騎士只知道他有任務(wù)湿刽,但是具體是什么任務(wù)的烁,只有等他具體接收的時(shí)候才能知道,所以他就可以成為很多騎士诈闺,殺死提莫的騎士渴庆,殺死亞索的騎士。雅镊。襟雷。這就是di所帶來(lái)最大的收益——松耦合。所以我們繼續(xù)向下操作

```

Job killYasuo =new KillTheYasuo();

BraveKnight braveKnight =new BraveKnight(killYasuo);

braveKnight.doTheJob();

```

這樣仁烹,就可以把殺死坑逼亞索的任務(wù)交給了這個(gè)騎士耸弄,這樣這個(gè)其實(shí)就可以為所欲為的做任何他想做的事了,而不是僅僅只殺死一只提莫卓缰。

這就是依賴注入的思想计呈。

1.2 aop

說(shuō)完了ioc 接下里繼續(xù)說(shuō)說(shuō)aop

aop 又稱面向切面編程,相對(duì)于面向?qū)ο缶幊陶骰#@又是一個(gè)更牛逼的思想捌显,那么何為aop呢,工作中一般任務(wù)是怎么劃分的总寒?基本分為兩種扶歪,一種是按照業(yè)務(wù)邏輯分,比如偿乖,訂單系統(tǒng)击罪,購(gòu)物車系統(tǒng)等等,這是在業(yè)務(wù)層面劃分的贪薪,還有一種是從代碼層面媳禁,視圖層啊,業(yè)務(wù)層啊画切,數(shù)據(jù)處理層啊竣稽,這些劃分就是為了更好去處理一些事情,讓工作變得更加有效率,代碼結(jié)構(gòu)更加清晰毫别。aop也可以理解成這樣的一種思想娃弓,一般被定義成一種實(shí)現(xiàn)關(guān)注點(diǎn)分離的技術(shù)。系統(tǒng)是由多個(gè)模塊組成岛宦,每個(gè)模塊負(fù)責(zé)自己的一個(gè)特殊的功能台丛,但是除了自己的任務(wù)以外,往往這些模塊還需要處理其他事情砾肺,比如權(quán)限挽霉,日志,事務(wù)等的管理变汪,這是每個(gè)系統(tǒng)都要面臨的問(wèn)題侠坎,而aop的思想就是將這些跟主業(yè)務(wù)無(wú)關(guān)但是又必須需要的相同的東西剝離出去統(tǒng)一管理,這樣就能讓這些模塊具有更高的內(nèi)聚性裙盾,更加專注于自身的業(yè)務(wù)实胸,從而使代碼更加簡(jiǎn)潔。

接下來(lái)我們繼續(xù)以騎士與坑逼提莫的故事繼續(xù)向下細(xì)談

我們假設(shè)每次在騎士執(zhí)行任務(wù)的時(shí)候都有一個(gè)人來(lái)記錄他的行為番官,在每次執(zhí)行任務(wù)之前和之后都會(huì)記錄庐完,我們就叫他死歌吧。我們來(lái)把他創(chuàng)造出來(lái)

```

public class DeadSinger {

public void singBeforeJob(){

System.out.println("騎士馬上就要干掉那個(gè)家伙了@鹉谩<偻省署咽!");

? ? }

public void singAfterJob(){

System.out.println("騎士干掉了那個(gè)家伙了=辍!宁否!");

? ? }

}

```

在每次騎士執(zhí)行doTheJob的時(shí)候都需要調(diào)用死歌的這兩個(gè)方法窒升,接下來(lái)我們來(lái)繼續(xù)操作

```

public BraveKnight(Job job,DeadSinger deadSinger){

this.job = job;

? ? this.deadSinger = deadSinger;

}

public void doTheJob(){

deadSinger.singBeforeJob();

? ? job.doTheJob();

? ? deadSinger.singAfterJob();

}

```

我們?cè)隍T士都構(gòu)造中傳入了這個(gè)死歌,并在他執(zhí)行Job的前后做出了記錄慕匠,當(dāng)騎士在執(zhí)行任務(wù)的時(shí)候就會(huì)有記錄饱须,但是這里總感覺(jué)有點(diǎn)不對(duì)勁,為嘛這個(gè)騎士需要管理這個(gè)死歌台谊,騎士只需要專心做他的任務(wù)就行了蓉媳,為何還要關(guān)系死歌的活動(dòng)呢,這就很奇怪了锅铅,而且把死歌注入這個(gè)騎士的體力酪呻,呃,想想有點(diǎn)可怕盐须。所以我們就需要將死歌記錄從這個(gè)騎士執(zhí)行任務(wù)中剝離出來(lái)玩荠,讓死歌專心記錄,讓騎士專心做任務(wù),并且騎士不應(yīng)該能感受到死歌的存在阶冈,這就是aop的思想闷尿,具體的實(shí)現(xiàn),我們下回再聊女坑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末填具,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匆骗,更是在濱河造成了極大的恐慌灌旧,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绰筛,死亡現(xiàn)場(chǎng)離奇詭異枢泰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)铝噩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門衡蚂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人骏庸,你說(shuō)我怎么就攤上這事毛甲。” “怎么了具被?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵玻募,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我一姿,道長(zhǎng)七咧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任叮叹,我火速辦了婚禮艾栋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛉顽。我一直安慰自己蝗砾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布携冤。 她就那樣靜靜地躺著悼粮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪曾棕。 梳的紋絲不亂的頭發(fā)上扣猫,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音睁蕾,去河邊找鬼苞笨。 笑死债朵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瀑凝。 我是一名探鬼主播序芦,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼粤咪!你這毒婦竟也來(lái)了谚中?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寥枝,失蹤者是張志新(化名)和其女友劉穎宪塔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囊拜,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡某筐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冠跷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片南誊。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜜托,靈堂內(nèi)的尸體忽然破棺而出抄囚,到底是詐尸還是另有隱情,我是刑警寧澤橄务,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布幔托,位于F島的核電站,受9級(jí)特大地震影響蜂挪,放射性物質(zhì)發(fā)生泄漏重挑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一锅劝、第九天 我趴在偏房一處隱蔽的房頂上張望攒驰。 院中可真熱鬧,春花似錦故爵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至伦仍,卻和暖如春结窘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背充蓝。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工隧枫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喉磁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓官脓,卻偏偏與公主長(zhǎng)得像协怒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卑笨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理孕暇,服務(wù)發(fā)現(xiàn),斷路器赤兴,智...
    卡卡羅2017閱讀 134,702評(píng)論 18 139
  • 夢(mèng)里 漸進(jìn)江南 草長(zhǎng)鶯飛 你騎白馬而來(lái) 瀟灑漂亮的臉龐 吹著悠揚(yáng)的短笛 我想靠近你 又自慚形穢 我想離你而去 卻又...
    元小默_89fd閱讀 179評(píng)論 0 0
  • 一妖滔、這一節(jié)印象最深刻的三個(gè)環(huán)節(jié)? ①同學(xué)課前講解時(shí)間的把握桶良。 ②自己在一定時(shí)間內(nèi)寫出自己所具有的多個(gè)能力座舍。 ③智力...
    子木_1df4閱讀 310評(píng)論 0 1
  • “見過(guò)?”劉小也呢喃道陨帆,他搜索了記憶所有角落并不記得有這人存在的痕跡簸州。 “夢(mèng)里∑缙”那人似提點(diǎn)道岸浑。 聽到夢(mèng)這一詞,劉...
    2485f51b393f閱讀 287評(píng)論 1 1
  • 老大離家久不還瑰步,清音幾曾到關(guān)山 錦城花好客弗在矢洲,蜀道路難誰(shuí)敢攀 歲華催人改笑貌,霜重濕衣易紅顏 佳節(jié)從來(lái)不由主缩焦,夢(mèng)...
    半個(gè)讀書人閱讀 189評(píng)論 12 22