Spring框架基礎(chǔ)學(xué)習(xí)(一)

Spring是什么

spring是一個(gè)輕量級(jí)的 控制反轉(zhuǎn)(Ioc)和面向切面(AOP)的容器框架

IOC: 輕量級(jí)的控制反轉(zhuǎn),達(dá)到松耦合的目的
將控制權(quán)交出去饮潦,使用時(shí)得到對(duì)象
AOP:面向切面赠堵,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)進(jìn)行內(nèi)聚性的開發(fā)----例如倉庫管理的業(yè)務(wù)邏輯和日志記錄的系統(tǒng)服務(wù)
事務(wù)管理剂跟,日志等
Spring框架特點(diǎn)
-從大小與開銷兩方面而言Spring都是輕量的

-通過控制反轉(zhuǎn)(IoC)的技術(shù)達(dá)到松耦合的目的

-提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)進(jìn)行內(nèi)聚性的開發(fā)

-包含并管理應(yīng)用對(duì)象的配置和生命周期,這個(gè)意義上是一種容器

-將簡(jiǎn)單的組件配置沼本、組合稱為復(fù)雜的應(yīng)用,這個(gè)意義上是框架

內(nèi)聚性:開發(fā)的原則:低耦合敬察,高內(nèi)聚
耦合:類與類的關(guān)系
內(nèi)聚:自己完成某件事的能力
適用范圍:
1.構(gòu)建企業(yè)應(yīng)用(SpringNVC+Spring+Hibernate/ibatis)

2.單獨(dú)使用Bean容器(Bean管理)

3.單獨(dú)使用AOP進(jìn)行切面處理

4.其他的Spring功能漠畜,如:對(duì)消息的支持等

5.在互聯(lián)網(wǎng)中應(yīng)用币他。

軟件框架:

軟件框架:
通常是指為了實(shí)現(xiàn)某個(gè)業(yè)界標(biāo)準(zhǔn)或完成特定基本任務(wù)的軟件組件規(guī)范,也指為了實(shí)現(xiàn)某個(gè)軟件組件規(guī)范時(shí)憔狞,提供規(guī)范所要求之基本功能的軟件產(chǎn)品
為什么使用框架
軟件系統(tǒng)日趨復(fù)雜
重用度高蝴悉,開發(fā)效率和質(zhì)量高
軟件設(shè)計(jì)人員要專注于對(duì)領(lǐng)域的了解,使需求更充分 易于上手瘾敢、快速解決問題
框架的特點(diǎn)
半成品
封裝了特定的處理流程和控制邏輯
成熟的拍冠、不斷升級(jí)改進(jìn)的軟件
框架與類庫的區(qū)別
框架一般是封裝了邏輯、高內(nèi)聚的簇抵,類庫則是松散的工具組合

接口

什么是接口
1庆杜、用于溝通的中介物的抽象化。(相當(dāng)于中間者碟摆,外部與接口溝通晃财,但不與接口實(shí)現(xiàn)類進(jìn)行溝通)

2、實(shí)體把自己提供給外界的一種抽象化說明典蜕,用以由內(nèi)部操作分離出外部溝通方法断盛,使其能被修改內(nèi)部而不影響外界其他實(shí)體與其交互的方式(接口提供外部功能,至于內(nèi)部的具體實(shí)現(xiàn)不對(duì)外公開愉舔,比如:注冊(cè)钢猛,只需要提供手機(jī)號(hào)、密碼等信息就可以進(jìn)行注冊(cè)轩缤,具體怎么實(shí)現(xiàn)的命迈,邏輯怎樣判斷的贩绕,數(shù)據(jù)存儲(chǔ)在哪里等具體實(shí)現(xiàn)邏輯不對(duì)外公開)

3、對(duì)應(yīng)java接口即聲明躺翻,聲明了哪些方法是對(duì)外公開提供的丧叽,在Java8中,接口可以擁有方法體公你,(某種程度上和抽象類具有相似的功能)踊淳。

面向接口編程:

1、結(jié)構(gòu)設(shè)計(jì)中陕靠,分清層次及調(diào)用關(guān)系迂尝,每層只向外(上層)提供一組功能接口,各層間僅依賴接口而非實(shí)現(xiàn)類剪芥。(多態(tài)的體現(xiàn))

2垄开、優(yōu)點(diǎn):接口實(shí)現(xiàn)的變動(dòng)不影響各層間的調(diào)用,這一點(diǎn)在向外提供公共服務(wù)或者在企業(yè)內(nèi)部提供公共服務(wù)中尤為重要税肪,由于公共服務(wù)溉躲,所以穩(wěn)定性一定很重要(對(duì)外提供接口保證了接口的穩(wěn)定性,對(duì)于接口的實(shí)現(xiàn)可以根據(jù)某一時(shí)期的具體情況或者某一時(shí)期具體邏輯的變化進(jìn)行調(diào)整)

3益兄、面向接口編程中的“接口”:用于隱藏具體實(shí)現(xiàn)和實(shí)現(xiàn)多態(tài)性的組件锻梳,面向接口編程在IOC中應(yīng)用非常廣泛(對(duì)外提供調(diào)用說明的,但不包含具體的實(shí)現(xiàn)净捅,具體的實(shí)現(xiàn)由接口實(shí)現(xiàn)類完成)

什么是IOC

IOC概念:(Inversion of Control)控制反轉(zhuǎn)疑枯,控制權(quán)的轉(zhuǎn)移,應(yīng)用程序本身不負(fù)責(zé)依賴對(duì)象的創(chuàng)建和維護(hù)蛔六,而是由外部容器負(fù)責(zé)創(chuàng)建(創(chuàng)建對(duì)象并且組裝對(duì)象之間的依賴關(guān)系)和維護(hù)(正常情況下使用對(duì)象則需要new對(duì)象荆永,而使用外部容器之后,對(duì)象就被容器管理了国章,包括對(duì)象的創(chuàng)建具钥、初始化、銷毀等液兽,對(duì)象就可以直接從容器中直接拿過來用)骂删,IOC容器在初始化時(shí),會(huì)創(chuàng)建一系列的對(duì)象抵碟,同時(shí)把對(duì)象之間的依賴關(guān)系通過注入的方式組織起來。(組裝:一個(gè)類A坏匪,和一個(gè)類B拟逮,類A把類B作為自己的屬性,當(dāng)IOC進(jìn)行實(shí)例化時(shí)适滓,先實(shí)例化A敦迄,再實(shí)例化B,再把B注入到A中)

比喻:我們手動(dòng)去new一個(gè)對(duì)象,就像我們想要一所房子罚屋,我們自己手動(dòng)的買材料去建造苦囱,而使用容器之后,就像找開發(fā)商脾猛,直接可以入住房子撕彤。

DI概念:(Dependency Injection)依賴注入,控制反轉(zhuǎn)的一種實(shí)現(xiàn)方式猛拴,獲得依賴對(duì)象的過程由自身管理變?yōu)榱擞蒊OC容器主動(dòng)注入羹铅,所謂依賴注入,就是由IOC容器在運(yùn)行期間愉昆,動(dòng)態(tài)地將某種依賴關(guān)系注入到對(duì)象之中职员。

IOC目的:創(chuàng)建對(duì)象并且組裝對(duì)象之間的關(guān)系(IOC容器在初始化時(shí),會(huì)初始化一系列的對(duì)象跛溉,同時(shí)能把對(duì)象之間的依賴關(guān)系通過注入的方式組織起來)例如:一個(gè)類A里存在另一個(gè)類B的聲明焊切,IOC會(huì)負(fù)責(zé)創(chuàng)建A和B的對(duì)象,并通過A的構(gòu)造方法注入B的實(shí)例芳室。
Spring官網(wǎng)給出IOC工作原理

image.png

描述IOC


image.png

Spring的Bean配置

1专肪、在IOC容器中所有的對(duì)象都稱為Bean。

2渤愁、Spring的Bean配置方式有兩種:基于XML配置牵祟、注解配置。

3抖格、XML中配置:<bean id="bean的唯一標(biāo)識(shí)",class="交給容器管理的類的路徑"></bean>

Bean容器的初始化

基礎(chǔ):兩個(gè)包:

org.springframework.beans

org.springframework.context

beans提供BeanFactory及其子類诺苹,它提供配置結(jié)構(gòu)和基本功能,并加載初始化Bean

context提供ApplicationContext及實(shí)現(xiàn)類保存了Bean對(duì)象并在Spring中被廣泛使用

初始化ApplicationContext方式:

1雹拄、加載本地文件(指定磁盤下某路徑下的xml文件)

2收奔、Classpath(相對(duì)路徑,相對(duì)項(xiàng)目的路徑)

3滓玖、Web應(yīng)用中依賴servlet或Listener初始化Bean容器(兩種方式坪哄,任選其一)
示例如圖


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市势篡,隨后出現(xiàn)的幾起案子翩肌,更是在濱河造成了極大的恐慌,老刑警劉巖禁悠,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件念祭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡碍侦,警方通過查閱死者的電腦和手機(jī)粱坤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門隶糕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人站玄,你說我怎么就攤上這事枚驻。” “怎么了株旷?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵再登,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我灾常,道長(zhǎng)霎冯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任钞瀑,我火速辦了婚禮沈撞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雕什。我一直安慰自己缠俺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布贷岸。 她就那樣靜靜地躺著壹士,像睡著了一般。 火紅的嫁衣襯著肌膚如雪偿警。 梳的紋絲不亂的頭發(fā)上躏救,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音螟蒸,去河邊找鬼盒使。 笑死,一個(gè)胖子當(dāng)著我的面吹牛七嫌,可吹牛的內(nèi)容都是我干的少办。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼诵原,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼英妓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绍赛,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤蔓纠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吗蚌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腿倚,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年褪测,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猴誊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侮措,死狀恐怖懈叹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情分扎,我是刑警寧澤澄成,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站畏吓,受9級(jí)特大地震影響墨状,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜菲饼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一肾砂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宏悦,春花似錦镐确、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砖瞧,卻和暖如春息堂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背块促。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工荣堰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人褂乍。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓持隧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親逃片。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屡拨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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