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