大名鼎鼎的Spring框架
有人曾說(shuō)2005年一片叫春之聲,指的就是該框架
Spring起源于Rod Johnson的《Expert One-on-One J2EE Design and Development》一書(shū)
Rod Johnson認(rèn)為,J2ee里面的那一套//尤其是ejb
太重了,對(duì)于單機(jī)的系統(tǒng)來(lái)說(shuō),沒(méi)有必要使用那么復(fù)雜的東西
于是就開(kāi)始設(shè)計(jì)并引導(dǎo)Spring小組開(kāi)發(fā)出這樣一個(gè)構(gòu)架
不能不說(shuō)他是個(gè)天才,因?yàn)榈牡拇_確不是所有的系統(tǒng)都是跨多服務(wù)器的
沒(méi)有必要把一個(gè)簡(jiǎn)單的系統(tǒng)設(shè)計(jì)得那么復(fù)雜//天才的那幾個(gè)共性又體現(xiàn)出來(lái)了
Spring從誕生之日起就是針對(duì)EJB的,力爭(zhēng)在不少應(yīng)用上取代EJB
而它也確實(shí)達(dá)到了這個(gè)目的
現(xiàn)在包括WebLogic等主流應(yīng)用服務(wù)器還有主流IDE都開(kāi)始逐漸接受該框架
并提供相應(yīng)支持
提到Spring就不能不說(shuō)控制反轉(zhuǎn)Ioc//Inversion of Control
和依賴(lài)注射DI//Dependency Injection
什么叫控制反轉(zhuǎn)呢?
套用好萊塢的一句名言就是:你呆著別動(dòng),到時(shí)我會(huì)找你。
什么意思呢?就好比一個(gè)皇帝和太監(jiān)
有一天皇帝想幸某個(gè)美女,于是跟太監(jiān)說(shuō),今夜我要寵幸美女
皇帝往往不會(huì)告訴太監(jiān),今晚幾點(diǎn)會(huì)回宮,會(huì)回哪張龍床,他只會(huì)告訴太監(jiān)他要哪位美女
其它一切都交由太監(jiān)去安排,到了晚上皇帝回宮時(shí),自然會(huì)有美女出現(xiàn)在皇帝的龍床上
這就是控制反轉(zhuǎn),而把美女送到皇帝的寢宮里面去就是注射
太監(jiān)就是是框架里面的注射控制器類(lèi)BeanFactory,負(fù)責(zé)找到美女并送到龍床上去
整個(gè)后宮可以看成是Spring框架,美女就是Spring控制下的JavaBean
而傳統(tǒng)的模式就是一個(gè)饑渴男去找小姐出臺(tái)
找領(lǐng)班,幫助給介紹一個(gè)云云,于是領(lǐng)班就開(kāi)始給他張羅
介紹一個(gè)合適的給他,完事后,再把小姐還給領(lǐng)班,下次再來(lái)
這個(gè)過(guò)程中,領(lǐng)班就是查詢(xún)上下文Context,領(lǐng)班的一個(gè)職能就是給客戶(hù)找到他們所要的小姐
這就是lookup()方法,領(lǐng)班手中的小姐名錄就是JNDI//Java Naming and Directory Interface
小姐就是EJB,饑渴男是客戶(hù)端,青樓是EJB容器
看到區(qū)別了么?饑渴男去找小姐出臺(tái)很麻煩,不僅得找,用完后還得把小姐給還回去
而皇帝爽翻了,什么都不用管,交給太監(jiān)去處理,控制權(quán)轉(zhuǎn)移到太監(jiān)手中去了
而不是皇帝,必要時(shí)候由太監(jiān)給注射進(jìn)去就可以了
看到Spring的美妙了吧,Spring還提供了與多個(gè)主流框架的支持
可以和其它開(kāi)源框架集成