最近在看Spring in Action,在這里和大家分享一些讀書筆記??赡艽蟛糠侄际钦毡拘?,希望大家能夠指教和討論。
Spring框架簡(jiǎn)介
Spring是一個(gè)開(kāi)源的框架。簡(jiǎn)單的說(shuō),Spring是一個(gè)輕量的控制反轉(zhuǎn)(inversion of control)和面向方向的(aspect-oriented)容器框架。
Spring框架由7個(gè)模塊組成,如下圖所示: 
Spring所有的模塊都是建立在Core Container模塊上的。Core Container定義了bean是怎樣創(chuàng)建、配置、管理的。
The Core Container 模塊:Spring的Core Container提供了基礎(chǔ)的功能。在這個(gè)模塊中,你能夠找到Spring的BeanFactory,BeanFactory是任何的基于Spring的應(yīng)用程序的核心。BeanFactory是Factory模式的實(shí)現(xiàn),應(yīng)用了IoC(Inversion of Control)來(lái)將應(yīng)用程序的配置和依賴說(shuō)明從應(yīng)用程序代碼中分離出來(lái)。
Application context模塊:core container模塊使Spring成為一個(gè)容器,Application context模塊使Spring成為一個(gè)框架。這個(gè)模塊擴(kuò)展了BeanFactory的概念,添加了對(duì)國(guó)際化(I18N, internationalization)信息、應(yīng)用程序生命周期、驗(yàn)證等的支持。這個(gè)模塊還提供例如email、JNDI訪問(wèn)、EJB集成等企業(yè)服務(wù)。
AOP模塊:這個(gè)模塊提供了對(duì)面向方向編程(aspect-oriented programming)的支持。
JDBC abstraction and the DAO模塊:使用JDBC會(huì)用到一些“樣板代碼”,如獲取connection、創(chuàng)建statement,處理result set,關(guān)閉connection等。Spring的JDBC和DAO模塊將這些代碼抽取出來(lái),這樣能夠是代碼更加干凈、簡(jiǎn)單,并且防止了關(guān)閉數(shù)據(jù)源失敗產(chǎn)生的問(wèn)題。這個(gè)模塊還在幾個(gè)不同的數(shù)據(jù)庫(kù)服務(wù)器給出的錯(cuò)誤信息的基礎(chǔ)上建立了一個(gè)有意義的異常層,不需要用戶再去解釋那些含義模糊的不同的服務(wù)器私有的錯(cuò)誤信息。這個(gè)模塊還使用Spring的AOP模塊來(lái)提供事務(wù)管理服務(wù)。
ORM模塊:Spring沒(méi)有實(shí)現(xiàn)自己的ORM,而是提供了到幾個(gè)流行的ORM框架的接口,包括Hibernate,JDO和iBATIS SQL Maps。Spring的事務(wù)管理象支持JDBC一樣支持這些ORM框架。
Web context模塊:web context模塊是建立再applcation context模塊上的,提供了適合語(yǔ)基于web的應(yīng)用程序的context。這個(gè)模塊還支持一些面向web的任務(wù),同時(shí)還集成了對(duì)Jakarta Struts的支持。
MVC框架:Spring提供了一個(gè)完整的建立web應(yīng)用程序的MVC框架。Spring能夠和其他的MVC框架例如Struts集成。 Spring的MVC框架利用IoC提供了控制邏輯和業(yè)務(wù)邏輯的分離。而且,Spring的MVC框架能夠利用Spring的其他服務(wù),例如I18N信息和驗(yàn)證。