面試官:"說說你對(duì)Spring的理解"

Spring是一個(gè)十分龐大的體系擎厢,具體可以訪問它的官網(wǎng)https://spring.io/projects進(jìn)行詳細(xì)了解。
首先,回答這個(gè)問題篓像,可以先介紹一下Spring體系中的幾個(gè)項(xiàng)目:

  • SpringFramework
  • SpringData
  • SpringSecurity
  • SpringBoot
  • SpringCloud
    當(dāng)然,除了這些之外皿伺,Spring還包括很多其他的項(xiàng)目员辩。
    接著,著重介紹SpringFramework這個(gè)項(xiàng)目鸵鸥,它是一個(gè)開源的Java/JavaEE全功能棧的應(yīng)用程序奠滑,SpringFramework提供了一個(gè)簡(jiǎn)易的開發(fā)方式,這種開發(fā)方式可以避免使用寫可能使底層代碼變得繁雜混亂的大量的屬性文件和不幫助類妒穴。
    Spring的這種低侵入式設(shè)計(jì)使代碼的污染極低宋税。
    SpringFramework包括以下部分:
    SpringFramework體系.png

Data Access/Integration模塊:數(shù)據(jù)訪問/集成
Web模塊:提供了基本的Web開發(fā)的集成特性
AOP模塊:提供了面向方面的編程實(shí)現(xiàn),允許您定義多方攔截器和切入點(diǎn)讼油,以干凈解耦杰赛,實(shí)現(xiàn)的功能,應(yīng)該分開的代碼汁讼。
Aspects模塊:提供與AspectJ的集成這又是一個(gè)功能強(qiáng)大且成熟的面向方面編程(AOP)框架
instrumentation模塊:提供了一定的應(yīng)用服務(wù)器中使用類工具的支持和類加載器實(shí)現(xiàn)
messaging模塊:消息通知
Core Container模塊:核心容器
Test模塊:測(cè)試模塊支持Spring組件使用JUnit或TestNG框架的測(cè)試

然后淆攻,我們?cè)诮邮芤幌耂pirng的核心概念:

  • Bean管理
  • 依賴注入(dependency injection),又稱為控制反轉(zhuǎn)(inversion of control)
  • 面向切面編程(AOP)
①Bean管理

與傳統(tǒng)的應(yīng)用程序不同,在Spring中將對(duì)象的創(chuàng)建交給Spring容器來管理嘿架,也就是說只有放入Spring容器中的類瓶珊,Spring才能對(duì)其產(chǎn)生作用。那么Spring究竟是怎樣獲取類的對(duì)象的呢耸彪?
要想知道這個(gè)伞芹,我們首先要弄清楚這幾點(diǎn):
BeanFactory是Spring容器的根接口,ApplicationContext是它的子接口蝉娜,通常用它的子接口ApplicationContext來訪問Spring容器唱较。

ApplicationContext子接口常用的有四個(gè)實(shí)現(xiàn)類:
  • ClassPathXmlApplicationContext 從 classpath 加載 spring 的配置文件
  • FileSystemApplicationContext 從系統(tǒng)文件加載 spring 的配置文件
  • AnnotationConfigApplicationContext 獲取基于注解的 spring 容器對(duì)象
  • XmlWebApplicationContext 在 web 環(huán)境中獲取 spring 容器對(duì)象
    Spring通過BeanFactory來獲取這些類的對(duì)象,在配置文件中通過<bean/>節(jié)點(diǎn)將類交給Spring行管理召川,ApplicationContext的實(shí)現(xiàn)類通過getBean()方法從Spring容器中獲取對(duì)象南缓,認(rèn)為單例的。
②依賴注入

它可以降低類之間的耦合性荧呐,有兩種注入方式:

  • set注入汉形,在配置文件中使用<property>節(jié)點(diǎn)


    set注入.jpg
  • 構(gòu)造方法注入纸镊,在配置文件中使用<constructor-arg>節(jié)點(diǎn)


    構(gòu)造方法注入.png

    下面舉個(gè)例子來說明一下什么是依賴注入:
    假設(shè)類A因功能F需要調(diào)用類B,傳統(tǒng)的程序中概疆,我們就會(huì)去new一個(gè)類B的對(duì)象逗威,因而類A就會(huì)依賴類于類B,這就是說如果類B不存在岔冀,則類A也就無法使用凯旭。而使用依賴注入以后,類A只需要去調(diào)用實(shí)現(xiàn)功能F接口的一個(gè)實(shí)現(xiàn)類使套,這個(gè)實(shí)現(xiàn)類可能是類B,C等等罐呼,具體調(diào)用誰是由Spring的配置文件決定的,這樣類A就不再依賴于類B童漩。
    我們可以這樣理解控制反轉(zhuǎn):
    資源不是由使用資源的雙方進(jìn)行管理弄贿,而是由不使用資源的第三方(即Spring容器)進(jìn)行管理,這樣做的好處是:

  • 資源集中管理矫膨,實(shí)現(xiàn)資源的可配置與易管理

  • 降低使用資源雙方的依賴程度

在傳統(tǒng)程序中差凹,當(dāng)某個(gè)角色需要另外一個(gè)角色協(xié)助時(shí),由調(diào)用者來創(chuàng)建被調(diào)用者的實(shí)例侧馅。而在Spring中危尿,創(chuàng)建被調(diào)用者的的工作不再由調(diào)用者來完成,而由第三方Spring容器來完成馁痴,所以稱為控制反轉(zhuǎn)谊娇,Spring容器創(chuàng)建被調(diào)用者的實(shí)例,然后注入調(diào)用者罗晕,所以又稱為依賴注入济欢。`

③面向切面編程

AOP在Spring中主要表現(xiàn)在兩個(gè)方面:

  • 提供聲明式事務(wù)管理
  • Spring支持用戶自定義切面
    面向切面編程是對(duì)面向?qū)ο缶幊蹋∣OP)的補(bǔ)充。面向?qū)ο缶幊虒⒊绦蚍纸獬蔀楦鱾€(gè)層次的對(duì)象小渊,面向切面編程將程序運(yùn)行過程分解成各個(gè)切面法褥。面向切面編程基于動(dòng)態(tài)代理實(shí)現(xiàn),降低了類直接的耦合程度酬屉。Spring的事務(wù)管理就是基于AOP實(shí)現(xiàn)的半等。

推薦文章:https://www.2cto.com/kf/201406/305929.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呐萨,隨后出現(xiàn)的幾起案子杀饵,更是在濱河造成了極大的恐慌,老刑警劉巖谬擦,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件切距,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惨远,警方通過查閱死者的電腦和手機(jī)谜悟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門饵沧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赌躺,你說我怎么就攤上這事∠鄱” “怎么了礼患?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)掠归。 經(jīng)常有香客問我缅叠,道長(zhǎng),這世上最難降的妖魔是什么虏冻? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任肤粱,我火速辦了婚禮,結(jié)果婚禮上厨相,老公的妹妹穿的比我還像新娘领曼。我一直安慰自己,他們只是感情好蛮穿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布庶骄。 她就那樣靜靜地躺著,像睡著了一般践磅。 火紅的嫁衣襯著肌膚如雪单刁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天府适,我揣著相機(jī)與錄音羔飞,去河邊找鬼。 笑死檐春,一個(gè)胖子當(dāng)著我的面吹牛逻淌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喇聊,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼恍风,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了誓篱?” 一聲冷哼從身側(cè)響起朋贬,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窜骄,沒想到半個(gè)月后锦募,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邻遏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年糠亩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虐骑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赎线,死狀恐怖廷没,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垂寥,我是刑警寧澤颠黎,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站滞项,受9級(jí)特大地震影響狭归,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜文判,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一过椎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧戏仓,春花似錦疚宇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嗓奢,卻和暖如春讼撒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背股耽。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工根盒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人物蝙。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓炎滞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诬乞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子册赛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)震嫉,斷路器森瘪,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 本文是我自己在秋招復(fù)習(xí)時(shí)的讀書筆記,整理的知識(shí)點(diǎn)票堵,也是為了防止忘記扼睬,尊重勞動(dòng)成果,轉(zhuǎn)載注明出處哦悴势!如果你也喜歡窗宇,那...
    波波波先森閱讀 12,291評(píng)論 6 86
  • 歲尾年初措伐,大家都在寫總結(jié)和展望。也來湊個(gè)熱鬧军俊,談?wù)勅蚍秶鷥?nèi)銀行業(yè)尤其是零售銀行業(yè)的發(fā)展趨勢(shì)侥加。在吃貨眼中,當(dāng)前銀行...
    北美之北閱讀 556評(píng)論 2 11
  • 1粪躬、《老婆發(fā)火的時(shí)候官硝,老公該怎么辦》 這個(gè)標(biāo)題就是提問式,引起讀者好奇 2短蜕、《別逼老師放棄你的孩子(這幾種家長(zhǎng),老...
    smellfish999閱讀 349評(píng)論 0 0
  • 通了電話傻咖,她過得很好朋魔,總是給人很正的一面!給你講好的卿操,高興的警检,開心的,希望她一直這樣害淤!一切美好扇雕!
    猶可以閱讀 167評(píng)論 1 0