javascript
小马哥spring编程核心思想_Spring源码高级笔记之——Spring核心思想
Spring核心思想
注意:IOC和AOP不是spring提出的,在spring之前就已經(jīng)存在,只不過更偏向于理論化,spring在技術(shù)層次把這兩個(gè)思想做了非常好的實(shí)現(xiàn)(Java)
第1節(jié)loC
1.1什么是loC?
loCInversion of Control(控制反轉(zhuǎn)/反轉(zhuǎn)控制),注意它是一個(gè)技術(shù)思想,不是一個(gè)技術(shù)實(shí)現(xiàn)描述的事情:Java開發(fā)領(lǐng)域?qū)ο蟮膭?chuàng)建,管理的問題
傳統(tǒng)開發(fā)方式:比如類A依賴于類B,往往會(huì)在類A中new一個(gè)B的對象
loC思想下開發(fā)方式:我們不用自己去new對象了,而是由loC容器(Spring框架)去幫助我們實(shí)例化對象并且管理它,我們需要使用哪個(gè)對象,去問loC容器要即可
我們喪失了一個(gè)權(quán)利〈創(chuàng)建、管理對象的權(quán)利),得到了一個(gè)福利〈不用考慮對象的創(chuàng)建、管理等一系列事情)
為什么叫做控制反轉(zhuǎn)?
控制:指的是對象創(chuàng)建(實(shí)例化、管理)的權(quán)利
反轉(zhuǎn)︰控制權(quán)交給外部環(huán)境了(spring框架、loC容器)
1.2loC解決了什么問題
loC解決對象之間的耦合問題
1.3 loC和DI的區(qū)別
Dl: Dependancy lnjection(依賴注入)
怎么理解:
IOC和DI描述的是同一件事情,只不過角度不—樣罷了
第2節(jié)AOP
2.1什么是AOP
AOP:Aspect oriented Programming面向切面編程/面向方面編程
AOP是OOP的延續(xù),從OOP說起
oOP三大特征:封裝、繼承和多態(tài)
oop是一種垂直繼承體系
OOP編程思想可以解決大多數(shù)的代碼重復(fù)問題,但是有一些情況是處理不了的,比如下面的在頂級(jí)父類Animal中的多個(gè)方法中相同位置出現(xiàn)了重復(fù)代碼,OOP就解決不了
橫切邏輯代碼
橫切邏輯代碼存在什么問題:
- 橫切代碼重復(fù)問題
- 橫切邏輯代碼和業(yè)務(wù)代碼混雜在一起,代碼臃腫,維護(hù)不方便
AOP出場,AOP獨(dú)辟蹊徑提出橫向抽取機(jī)制,將橫切邏輯代碼和業(yè)務(wù)邏輯代碼分析
代碼拆分容易,那么如何在不改變原有業(yè)務(wù)邏輯的情況下,悄無聲息的把橫切邏輯代碼應(yīng)用到原有的業(yè)務(wù)邏輯中,達(dá)到和原來—樣的效果,這個(gè)是比較難的
2.2AOP在解決什么問題
在不改變原有業(yè)務(wù)邏輯情況下,增強(qiáng)橫切邏輯代碼,根本上解耦合,避免橫切邏輯代碼重復(fù)
2.3為什么叫做面向切面編程
「切」︰指的是橫切邏輯,原有業(yè)務(wù)邏輯代碼我們不能動(dòng),只能操作橫切邏輯代碼,所以面向橫切邏輯
「面」︰橫切邏輯代碼往往要影響的是很多個(gè)方法,每一個(gè)方法都如同一個(gè)點(diǎn),多個(gè)點(diǎn)構(gòu)成面,有一個(gè)面的概念在里面
以上就是Spring核心思想的全部內(nèi)容了,之后Spring源碼學(xué)習(xí)的內(nèi)容會(huì)持續(xù)更新,喜歡的朋友記得點(diǎn)個(gè)關(guān)注哦!
總結(jié)
以上是生活随笔為你收集整理的小马哥spring编程核心思想_Spring源码高级笔记之——Spring核心思想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洲际的merlin怎么用_天问一号是怎么
- 下一篇: 从上往下 流式布局_揭秘做好网站结构优化