Spring做為Pivotal所維護(hù)的一個(gè)開源框架,相信很多程序員在學(xué)習(xí)Spring的時(shí)候都會(huì)一籌莫展。其實(shí)Spring常規(guī)的主要內(nèi)容就是IOC,AOP,DI還有包括可能會(huì)出現(xiàn)的一些問題。比如Spring三級(jí)緩存以及循環(huán)依賴。不過,當(dāng)面試官讓你你談一談對(duì)Spring的理解。可能大部分人就會(huì)束手無策?!八痪褪且粋€(gè)基礎(chǔ)框架嗎?”還能有什么理解?
實(shí)際上,在我看來,Spring就是做了一個(gè)外包公司的工作。為什么這樣理解?

Spring的核心功能就是簡(jiǎn)化企業(yè)級(jí)應(yīng)用開發(fā)。而這個(gè)簡(jiǎn)化的過程,他用了非常多的手段。例如:解耦:為了完成這個(gè)功能。他會(huì)有一個(gè)容器的概念,而這個(gè)容器,將它設(shè)想為一家外包公司。原本是公司與項(xiàng)目直接進(jìn)行耦合,而現(xiàn)在多了個(gè)第三方,公司與項(xiàng)目之間沒有耦合了,耦合的是第三方。

而在我們的java語言當(dāng)中,由于缺少了欠缺屬性、事件、多重繼承功能。所以,如果要在Java程序中實(shí)現(xiàn)一些面向?qū)ο缶幊痰某R娦枨?,只能手寫大量膠水代碼。Java Bean正是編寫這套膠水代碼的慣用模式或約定。其實(shí),這也算是模板模式思想的一種設(shè)計(jì)體現(xiàn)。但并不是說他就是模板模式。比如get,set等方法。那么這個(gè)時(shí)候我們Spring容器本質(zhì)上是管理這些Bean對(duì)象的。他是去生成以及創(chuàng)建這些對(duì)象的。那么怎么去管理呢?這個(gè)時(shí)候可以創(chuàng)建一個(gè)名為BeanFactory的容器。用來生產(chǎn)與創(chuàng)建相關(guān)的對(duì)象。這不就是一個(gè)外包公司所做的事情嗎?在大部分互聯(lián)網(wǎng)公司當(dāng)中,也充分利用了這樣的邏輯,為了減輕負(fù)重,會(huì)將大量的重復(fù)勞動(dòng)力推到外包公司手上,甚至將項(xiàng)目整包出去。所以,甲方公司不用考慮項(xiàng)目基本完成之后的工作,只需要留下其中一兩個(gè)人做老項(xiàng)目的維護(hù),其他人的裁撤是不需要?jiǎng)趧?dòng)成本的,比如賠付N+1。來說說AOP作為Spring框架的核心思想,類比起來,無非就是為了讓Spring能夠適用更多的甲方公司的通用功能模板。

最后包括DI作為實(shí)現(xiàn)IOC實(shí)現(xiàn)的方式與手段,實(shí)際上也可以類比為:外包公司為了適配人員的流動(dòng)性所設(shè)計(jì)的一個(gè)方案。作為技術(shù)人,最需要的是對(duì)技術(shù)的個(gè)人理解,在與面試官博弈的時(shí)候,如果對(duì)某個(gè)技術(shù)能夠與面試官攀談技術(shù)的深度和理解能力,相信要拿住Offer將會(huì)非常輕松。
最后拿出收藏已久的珍藏福利,需要的同學(xué)可以掃后面的二維碼自行領(lǐng)取,不需要的同學(xué)也可以收藏一份以備不時(shí)之需。
大廠面試題庫



簡(jiǎn)歷模板

技術(shù)文檔

電子書

需要的同學(xué)可以掃小助手微信領(lǐng)?。?/p>