Spring的IOC和AOP

學(xué)習(xí)Spring框架:

??? 1.理解“控制反轉(zhuǎn)“

??????? 控制反轉(zhuǎn)反砌,也稱為依賴注入蛔六,是面向?qū)ο缶幊讨械囊环N設(shè)計(jì)理念费奸,用來降低程序代碼之間的耦合度包雀。

?????? 程序的耦合:

??????????? 調(diào)用者與被調(diào)用者的依賴關(guān)系

?????? 比如:程序員A負(fù)責(zé)編寫A類憋他,程序員B負(fù)責(zé)B類開發(fā)孩饼,A類的某些功能需要實(shí)例化B類的對(duì)象調(diào)用其方法才能完成,那么A類就依賴B類竹挡,如果程序員B不寫B(tài)類 難道程序員A要一直等下去嗎镀娶?

??????????? 企業(yè)開發(fā)的原則:

??????????? "編譯時(shí)不依賴,運(yùn)行時(shí)才依賴"

public class PersonServiceBean{

? ? ? private PersonDao personDao=new PersonDaoBean();

? ? ? public void save(Person person){

? ? ? ? ? ? personDao.save(person);

? ? ? }

}

PersonDaoBean 是在應(yīng)用內(nèi)部創(chuàng)建及維護(hù)的揪罕,所謂控制反轉(zhuǎn)就是應(yīng)用本身不負(fù)責(zé)依賴對(duì)象的創(chuàng)建及維護(hù)梯码,依賴對(duì)象的創(chuàng)建及維護(hù)是由外部容器負(fù)責(zé)的。這樣控制權(quán)就由應(yīng)用轉(zhuǎn)移到了外部容器好啰,控制權(quán)的轉(zhuǎn)移就是所謂的反轉(zhuǎn)轩娶。

2.依賴注入

??? 當(dāng)我們把依賴對(duì)象交給外部容器負(fù)責(zé)創(chuàng)建,那么PersonServiceBean類可以改成

public class PersonServiceBean{

? ? ? private PersonDao personDao;

? ? //通過構(gòu)造參數(shù)框往,讓容器把創(chuàng)建好的依賴對(duì)象注入進(jìn)PersonServiceBean,當(dāng)然也可以使用setter方法進(jìn)行注入

? ? ? public PersonServiceBean(PersonDao personDao ){

? ? ? ? this.personDao=personDao ;

? ? ? }

? ? ? public void save(Person person){

? ? ? ? ? ? personDao.save(person);

? ? ? }

}

所謂依賴注入就是指:在運(yùn)行期鳄抒,由外部容器動(dòng)態(tài)地將依賴對(duì)象注入到組件中。

Spring AOP

??? 理解“面向切面編程”

??? 那么什么是面向切面編程呢椰弊?

比如在兩個(gè)類中许溅,可能都需要在每個(gè)方法中記錄日志。按照面向?qū)ο蟮脑O(shè)計(jì)方法秉版,我們就必須在兩個(gè)類的方法中都加入日志的內(nèi)容贤重。也許他們是完全相同的,但就是因?yàn)槊嫦驅(qū)ο蟮脑O(shè)計(jì)讓類與類之間無法聯(lián)系沐飘,而不能將這些重復(fù)的代碼統(tǒng)一起來游桩。

? ?也許有人會(huì)說,那好辦啊耐朴,我們可以將這段代碼寫在一個(gè)獨(dú)立的類獨(dú)立的方法里借卧,然后再在這兩個(gè)類中調(diào)用。但是筛峭,這樣一來铐刘,這兩個(gè)類跟我們上面提到的獨(dú)立的類就有耦合了,它的改變會(huì)影響這兩個(gè)類影晓。那么镰吵,有沒有什么辦法檩禾,能讓我們?cè)谛枰臅r(shí)候,隨意地加入代碼呢疤祭?這種在運(yùn)行時(shí)盼产,動(dòng)態(tài)地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程勺馆。

??? 簡(jiǎn)單的說就是在不改變?cè)绦虻幕A(chǔ)上為代碼增加新的功能戏售,對(duì)代碼進(jìn)行增強(qiáng)處理。

常用增強(qiáng)處理類型

Before 前置增強(qiáng)處理草穆,在目標(biāo)方法前織入增強(qiáng)處理

AfterReturning 后置增強(qiáng)處理灌灾,在目標(biāo)方法正常執(zhí)行(不出現(xiàn)異常)后織入處理

AfterThrowing 異常增強(qiáng)處理,在目標(biāo)方法拋出異常后織入增強(qiáng)處理

After 最終增強(qiáng)處理悲柱,無論方法是否拋出異常锋喜,都會(huì)在目標(biāo)方法最后織入增強(qiáng)處理

Around 環(huán)繞增強(qiáng)處理,在目標(biāo)方法的前后都可以織入增強(qiáng)處理

Spring AOP配置元素

<aop:config> AOP配置的頂層元素豌鸡,大多數(shù)的<aop:*>元素必須包含在<aop:config>元素內(nèi)

? <aop:pointcut> 定義切點(diǎn)

? <aop:aspect> 定義切面

??? <aop:after> 定義最終增強(qiáng)(不管被通知的方法是否執(zhí)行成功)

??? <aop:after-returning>定義after-returning增強(qiáng)

??? <aop:after-throwing>定義after-throwing增強(qiáng)

??? <aop:around> 定義環(huán)繞增強(qiáng)

??? <aop:before> 定義前置增強(qiáng)

<aop:aspectj-autoproxy> 啟動(dòng)@AspectJ注解驅(qū)動(dòng)的切面

使用注解的方式實(shí)現(xiàn)IOC


1嘿般、@Controller 控制器(注入服務(wù))

2、@Service 服務(wù)(業(yè)務(wù)層)

3直颅、@Repository dao(實(shí)現(xiàn)dao訪問)

4博个、@Component (把普通pojo實(shí)例化到spring容器中,相當(dāng)于配置文件中的<bean id="" class=""/>)

? @Component,@Service,@Controller,@Repository注解的類功偿,并把這些類納入進(jìn)spring容器中管理盆佣。?

在配置文件中添加引入component的掃描組件?

<context:component-scan base-package=”com.mmnc”>

?注意:使用注解方式注入的bean 默認(rèn)id為類的首字母小寫。

使用注解的方式實(shí)現(xiàn)AOP


1械荷、@Aspect 定義切面

2共耍、@Before 前置增強(qiáng) @AfterReturning 后置增強(qiáng) @AfterThrowing 異常拋出增強(qiáng) @After 最終增強(qiáng) @Around 環(huán)繞增強(qiáng)

3、@Pointcut 切點(diǎn)表達(dá)式

在配置文件首先要導(dǎo)入aop命名空間 然后添加

?? <aop:aspectj-autoproxy/>元素就可以啟用注解吨瞎。


原文鏈接:https://blog.csdn.net/qq_38006047/article/details/80797386

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痹兜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颤诀,更是在濱河造成了極大的恐慌字旭,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崖叫,死亡現(xiàn)場(chǎng)離奇詭異遗淳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)心傀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門屈暗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事养叛≈帜牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵弃甥,是天一觀的道長(zhǎng)爽室。 經(jīng)常有香客問我,道長(zhǎng)淆攻,這世上最難降的妖魔是什么肮之? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮卜录,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眶明。我一直安慰自己艰毒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布搜囱。 她就那樣靜靜地躺著丑瞧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜀肘。 梳的紋絲不亂的頭發(fā)上绊汹,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音扮宠,去河邊找鬼西乖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛坛增,可吹牛的內(nèi)容都是我干的获雕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼收捣,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼届案!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罢艾,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤楣颠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后咐蚯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體童漩,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年仓蛆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睁冬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖豆拨,靈堂內(nèi)的尸體忽然破棺而出直奋,到底是詐尸還是另有隱情,我是刑警寧澤施禾,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布脚线,位于F島的核電站,受9級(jí)特大地震影響弥搞,放射性物質(zhì)發(fā)生泄漏邮绿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一攀例、第九天 我趴在偏房一處隱蔽的房頂上張望船逮。 院中可真熱鬧,春花似錦粤铭、人聲如沸挖胃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酱鸭。三九已至,卻和暖如春垛吗,著一層夾襖步出監(jiān)牢的瞬間凹髓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工怯屉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔚舀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓锨络,卻偏偏與公主長(zhǎng)得像蝗敢,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子足删,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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

  • Spring Spring 是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(Ioc)和面向切面(AOP)的容器框架寿谴。 1、Spring下的...
    熊貓的雄閱讀 1,481評(píng)論 0 0
  • Spring的AOP 為什么會(huì)出現(xiàn)AOP呢 這就不能不說OOP 面向?qū)ο缶幊?允許開發(fā)者定義縱向的關(guān)系 并且適用于...
    yubook閱讀 338評(píng)論 0 0
  • IOC是一個(gè)容器失受,可以管理和創(chuàng)建對(duì)象讶泰,一般java程序中的每個(gè)業(yè)務(wù)邏輯至少兩個(gè)或以上的對(duì)象來協(xié)作完成,例如當(dāng)類A需...
    五月天_7df7閱讀 298評(píng)論 0 2
  • PART_ONE:IOCSpring的ioc可以解決開發(fā)過程中New對(duì)象的操作拂到。 1.除了導(dǎo)入Spring的jar...
    ccccaixiaohao閱讀 115評(píng)論 0 0
  • 今天周一是文文老師的流瑜伽課痪署,我喜歡的課程之一, 也是我二月份第一天健身打卡時(shí)間兄旬。 話說有一個(gè)月沒有運(yùn)動(dòng)狼犯,...
    愛笑丫頭_e800閱讀 276評(píng)論 2 4