Spring基礎(chǔ)

1.Spring簡(jiǎn)介:
Spring是一個(gè)輕量級(jí)控制反轉(zhuǎn)(IOC)和面向切面(AOP)的容器框架,為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而誕生的
2.控制反轉(zhuǎn):獲得依賴對(duì)象的過程被反轉(zhuǎn)了撇贺,由自身的管理冀惭,變成IOC容器注入
控制反轉(zhuǎn)是Spring的核心堂鲜,就是由Spring來控制對(duì)象的生命周期及對(duì)象間的關(guān)系
1)傳統(tǒng)的開發(fā)模式:對(duì)象之間相互依賴
例如找女朋友筒扒,自己得到處找,從性格鸠踪,外貌丙者,身材等各個(gè)方面去考慮,去尋找


image.png

各個(gè)模塊之間相互關(guān)聯(lián)牽一發(fā)而動(dòng)全身
2)IOC開發(fā)模式:IOC容器安排對(duì)象之間的關(guān)系
例如找女朋友的時(shí)候有一個(gè)婚介所营密,你把自己的需求提出來剩下的交給婚介所去安排就好了


image.png

把控制權(quán)交給了IOC容器械媒,IOC容器相當(dāng)于凝合劑的作用
image.png

互相不相關(guān)
IOC另外的名字叫做依賴注入(DI),所謂的依賴注入评汰,就是IOC容器在運(yùn)行期間纷捞,動(dòng)態(tài)的將某種依賴關(guān)系注入到對(duì)象中,所以依賴注入和控制反轉(zhuǎn)是從不同的角度描述的同一件事情被去,就是通過引入IOC容器主儡,利用依賴注入的方式,實(shí)現(xiàn)解耦惨缆。
image.png

對(duì)象相當(dāng)于主機(jī)糜值,各種USB設(shè)備相當(dāng)于關(guān)系丰捷,主機(jī)不需要知道為什么要插入U(xiǎn)SB,只需要識(shí)別USB設(shè)備即可臀玄,“我”來控制插入何種USB設(shè)備膘螟,我就相當(dāng)于IOC容器竿痰,我把USB注入到了主機(jī)吭露。當(dāng)電腦主機(jī)讀取文件的時(shí)候暇屋,我就把它需要的外部設(shè)備掛接上煞抬,掛接設(shè)備的過程混萝,和在系統(tǒng)運(yùn)行過程中一個(gè)被依賴的對(duì)象注入到另一個(gè)對(duì)象的過程是一樣的 狱杰。
對(duì)象A依賴對(duì)象B屹耐,當(dāng)對(duì)象A需要用到對(duì)象B的時(shí)候少漆,IOC容器就立刻創(chuàng)建一個(gè)對(duì)象B給對(duì)象A臼膏。IOC容器相當(dāng)于一個(gè)對(duì)象制造工廠,你需要啥就給你啥示损,不需要關(guān)心所用的東西如何制成的和銷毀的渗磅,這些都由IOC容器來包辦

總結(jié):
IOC通俗理解:說的是創(chuàng)建實(shí)例對(duì)象的控制權(quán)從代碼控制剝離到IOC容器控制,實(shí)際上就是在你的xml文件中控制检访,側(cè)重原理
DI:說的是創(chuàng)建對(duì)象示例始鱼,為這個(gè)對(duì)象注入屬性值和它的對(duì)象實(shí)例,側(cè)重實(shí)現(xiàn)脆贵。
3.面向切面(AOP)
AOP把常用的功能模塊化医清,每一個(gè)業(yè)務(wù)組件只需要關(guān)心自己的業(yè)務(wù)邏輯,而不用去了解常用的服務(wù)組件卖氨。有效的防止代碼混亂
AOP專門用于處理系統(tǒng)中分布于各個(gè)模塊中交叉點(diǎn)關(guān)注的問題会烙,在javaee中通常通過AOP來處理一些具有橫切性質(zhì)的系統(tǒng)級(jí)服務(wù)


image.png

image.png

切面:關(guān)注點(diǎn)的模塊化,關(guān)注點(diǎn)可能會(huì)橫切多個(gè)對(duì)象筒捺,
連接點(diǎn):程序在運(yùn)行過程中某個(gè)特定的點(diǎn)柏腻,例如方法調(diào)用的時(shí)候,處理異常的時(shí)候系吭,通俗的說就是加入切點(diǎn)的那個(gè)點(diǎn)
通知:連接點(diǎn)執(zhí)行的動(dòng)作
AOP通俗理解:
一個(gè)組件A五嫂,不關(guān)心其它常用的服務(wù)組件B,但是A要使用組件B的時(shí)候村斟,不是組件A自己去調(diào)用贫导,而是通過配置等其他方式,比如Spring中的xml配置文件蟆盹,這樣A不需要知道組件B的任何事情孩灯,A只關(guān)心自己的業(yè)務(wù)邏輯,具體在A使用B的過程中逾滥,配置文件去做峰档,與具體的A組件無(wú)關(guān)败匹。

自動(dòng)裝配模式的區(qū)別

  • no:這是Spring框架的默認(rèn)設(shè)置,在該設(shè)置下自動(dòng)裝配是關(guān)閉的讥巡,開發(fā)者需要自行在bean定義中用標(biāo)簽明確的設(shè)置依賴關(guān)系掀亩。
  • byName:該選項(xiàng)可以根據(jù)bean名稱設(shè)置依賴關(guān)系。當(dāng)向一個(gè)bean中自動(dòng)裝配一個(gè)屬性時(shí)欢顷,容器將根據(jù)bean的名稱自動(dòng)在在配置文件中查詢一個(gè)匹配的bean槽棍。如果找到的話,就裝配這個(gè)屬性抬驴,如果沒找到的話就報(bào)錯(cuò)炼七。
  • byType:該選項(xiàng)可以根據(jù)bean類型設(shè)置依賴關(guān)系。當(dāng)向一個(gè)bean中自動(dòng)裝配一個(gè)屬性時(shí)布持,容器將根據(jù)bean的類型自動(dòng)在在配置文件中查詢一個(gè)匹配的bean豌拙。如果找到的話,就裝配這個(gè)屬性题暖,如果沒找到的話就報(bào)錯(cuò)按傅。
  • constructor:造器的自動(dòng)裝配和byType模式類似,但是僅僅適用于與有構(gòu)造器相同參數(shù)的bean胧卤,如果在容器中沒有找到與構(gòu)造器參數(shù)類型一致的bean唯绍,那么將會(huì)拋出異常。
  • autodetect:該模式自動(dòng)探測(cè)使用構(gòu)造器自動(dòng)裝配或者byType自動(dòng)裝配灌侣。首先推捐,首先會(huì)嘗試找合適的帶參數(shù)的構(gòu)造器,如果找到的話就是用構(gòu)造器自動(dòng)裝配侧啼,如果在bean內(nèi)部沒有找到相應(yīng)的構(gòu)造器或者是無(wú)參構(gòu)造器牛柒,容器就會(huì)自動(dòng)選擇byTpe的自動(dòng)裝配方式。

Spring 框架中都用到了哪些設(shè)計(jì)模式

  • 代理模式—在AOP和remoting中被用的比較多痊乾。
  • 單例模式—在spring配置文件中定義的bean默認(rèn)為單例模式皮壁。
  • 模板方法—用來解決代碼重復(fù)的問題 比如. RestTemplate, JmsTemplate, JpaTemplate。 前端控制器—Srping提供了DispatcherServlet來對(duì)請(qǐng)求進(jìn)行分發(fā)哪审。 視圖幫助(View Helper )—Spring提供了一系列的JSP標(biāo)簽蛾魄,高效宏來輔助將分散的代碼整合在視圖里。 依賴注入—貫穿于BeanFactory / ApplicationContext接口的核心理念湿滓。
  • 工廠模式—BeanFactory用來創(chuàng)建對(duì)象的實(shí)例滴须。
  • Builder模式- 自定義配置文件的解析bean是時(shí)采用builder模式,一步一步地構(gòu)建一個(gè)beanDefinition
  • 策略模式:Spring 中策略模式使用有多個(gè)地方叽奥,如 Bean 定義對(duì)象的創(chuàng)建以及代理對(duì)象的創(chuàng)建等扔水。這里主要看一下代理對(duì)象創(chuàng)建的策略模式的實(shí)現(xiàn)。 前面已經(jīng)了解 Spring 的代理方式有兩個(gè) Jdk 動(dòng)態(tài)代理和 CGLIB 代理朝氓。這兩個(gè)代理方式的使用正是使用了策略模式魔市。

Spring事務(wù)的隔離級(jí)別

  1. ISOLATION_DEFAULT: 這是一個(gè)PlatfromTransactionManager默認(rèn)的隔離級(jí)別主届,使用數(shù)據(jù)庫(kù)默認(rèn)的事務(wù)隔離級(jí)別.
    另外四個(gè)與JDBC的隔離級(jí)別相對(duì)應(yīng)
  2. ISOLATION_READ_UNCOMMITTED: 這是事務(wù)最低的隔離級(jí)別,它充許令外一個(gè)事務(wù)可以看到這個(gè)事務(wù)未提交的數(shù)據(jù)待德。
  3. ISOLATION_READ_COMMITTED: 保證一個(gè)事務(wù)修改的數(shù)據(jù)提交后才能被另外一個(gè)事務(wù)讀取君丁。另外一個(gè)事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)
  4. ISOLATION_REPEATABLE_READ: 這種事務(wù)隔離級(jí)別可以防止臟讀,不可重復(fù)讀将宪。但是可能出現(xiàn)幻像讀绘闷。
  5. ISOLATION_SERIALIZABLE 這是花費(fèi)最高代價(jià)但是最可靠的事務(wù)隔離級(jí)別。事務(wù)被處理為順序執(zhí)行涧偷。

Spring事務(wù)定義的傳播規(guī)則

PROPAGATION_REQUIRED–支持當(dāng)前事務(wù)簸喂,如果當(dāng)前沒有事務(wù)毙死,就新建一個(gè)事務(wù)燎潮。這是最常見的選擇。

PROPAGATION_SUPPORTS–支持當(dāng)前事務(wù)扼倘,如果當(dāng)前沒有事務(wù)确封,就以非事務(wù)方式執(zhí)行。

PROPAGATION_MANDATORY–支持當(dāng)前事務(wù)再菊,如果當(dāng)前沒有事務(wù)爪喘,就拋出異常。

PROPAGATION_REQUIRES_NEW–新建事務(wù)纠拔,如果當(dāng)前存在事務(wù)秉剑,把當(dāng)前事務(wù)掛起。

PROPAGATION_NOT_SUPPORTED–以非事務(wù)方式執(zhí)行操作稠诲,如果當(dāng)前存在事務(wù)侦鹏,就把當(dāng)前事務(wù)掛起。

PROPAGATION_NEVER–以非事務(wù)方式執(zhí)行臀叙,如果當(dāng)前存在事務(wù)略水,則拋出異常。

PROPAGATION_NESTED–如果當(dāng)前存在事務(wù)劝萤,則在嵌套事務(wù)內(nèi)執(zhí)行渊涝。如果當(dāng)前沒有事務(wù),則進(jìn)行與PROPAGATION_REQUIRED類似的操作床嫌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跨释,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子厌处,更是在濱河造成了極大的恐慌鳖谈,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘱蛋,死亡現(xiàn)場(chǎng)離奇詭異蚯姆,居然都是意外死亡五续,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門龄恋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疙驾,“玉大人,你說我怎么就攤上這事郭毕∷椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵显押,是天一觀的道長(zhǎng)扳肛。 經(jīng)常有香客問我,道長(zhǎng)乘碑,這世上最難降的妖魔是什么挖息? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮兽肤,結(jié)果婚禮上套腹,老公的妹妹穿的比我還像新娘。我一直安慰自己资铡,他們只是感情好电禀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笤休,像睡著了一般尖飞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上店雅,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天政基,我揣著相機(jī)與錄音,去河邊找鬼底洗。 笑死腋么,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亥揖。 我是一名探鬼主播珊擂,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼费变!你這毒婦竟也來了摧扇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挚歧,失蹤者是張志新(化名)和其女友劉穎扛稽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滑负,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡在张,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年用含,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帮匾。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啄骇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瘟斜,到底是詐尸還是另有隱情缸夹,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布螺句,位于F島的核電站虽惭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛇尚。R本人自食惡果不足惜芽唇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佣蓉。 院中可真熱鬧披摄,春花似錦、人聲如沸勇凭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)虾标。三九已至,卻和暖如春灌砖,著一層夾襖步出監(jiān)牢的瞬間璧函,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工基显, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蘸吓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓撩幽,卻偏偏與公主長(zhǎng)得像库继,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窜醉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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