1.1 spring是什么?
(1)Spring是什么
答:spring是一個開源框架,由Rod Johnson創建。Spring是為了簡化企業級應用開發應運而生的。使用Spring可以用簡單的javaBeans實現那些以前只有在EJB中才可以使用的功能。任何Java應用開發都可以從Spring的簡單、可測試、松耦合特征中獲得益處。
補:在剛接觸spring的時候,也沒有看過spring官方的英文文檔,我以為spring只有在開發WEB項目的時候才可以使用,我所了解的全部關于spring的東西就是,可以使用spring將Struts2和Hibernate整合到一起。
收獲:spring是一個開源框架,任何Java應用程序都可以使用spring,并且從中獲益。
(2)Spring的基本組成部件
Spring是一個輕量級的DI和AOP容器框架
基本組成部件如下:
1)輕量級 從大小和應用開支上看為輕量級,并且spring是非侵入式的
2)依賴注入(DI) 一種松耦合技術,或者稱為“控制反轉”。主要思想:對象被動接收依賴類,不主動尋找
3)面向切面(AOP) 為面向切面編程提供強大支持,目的:分離系統級邏輯功能實現和我們自己的業務邏輯實現,例如將事務功能從業務邏輯中分離出去
4)容器 Spring是一個容器,包含和管理Bean的生命周期和配置。但是Spring是輕量級的
5)框架 spring提供了很多基礎功能(如事務,持久層集成,安全)。我們使用Spring可以將簡單的組件配置組成一個復雜應用
總之:使用Spring可以簡化應用程序開發,以及得益于spring松耦合和可測試的優點。
(3)Spring由幾個位于Spring核心容器之上的幾個模塊組成,這種模式特性使用戶可以根據需要靈活使用Spring框架,各個模塊可以選擇使用。
下圖不是很復雜,可以幫助我們再比較寬的層次上理解Spring的組成。方便記憶。
各個模塊簡單介紹如下:
- 核心容器(Core) 為Spring框架提供基礎功能,BeanFactroy在這個模塊定義,是“依賴注入”功能的基礎。
- Application Context(Context) 應用程序上下文模塊,擴展自BeanFactory,添加了I18N國際化,應用生命周期事件,驗證支持。另外提供了企業級的服務如:電子郵件服務、JNDI訪問、EJB集成、遠程調用、定時服務,支持與其他模板集成。如果BeanFactory是Spring成為容器,ApplicationContext則使spring成為框架。
- Spring 的AOP模塊 此模塊對面向切面編程提供強大支持。是spring應用開發切面的基礎,此模塊提供多種方法來建立切面,包括基于AOP Alliance接口的切面建立和對AspectJ的支持。
- JDBC抽象及DAO模板 spring的jdbc和dao模板把樣板代碼抽象出來,使數據庫代碼簡單明了,并且建立了一個容易理解的數據庫異常層
- ORM映射集成模塊 spring的ORM支持建立在DAO支持之上,spring為許多流行的ORM框架提供了鉤子程序,例如Hibernate,JPA,JDO,Ibatis等
- java 管理擴展(JMX) spring的jmx模塊可以方便的展現應用Bean,就像JMX Mbeans,從而可以監控和重新配置運行中的應用程序。
- java EE 連接器 API(JCA) jca提供了一種標準的方法來集成java應用和多種企業信息系統,包括主框架和數據庫,spring對jca的支持類似于對jdbc的支持,也是抽象樣本代碼到模板中。
- spring MVC框架 spring提供了自己的MVC框架,是一個松耦合的基于三層模式的web框架。
- spring portlet MVC 框架 最新的spring版本支持portlet2.0的所有特性。
- spring web模塊 spring的web模塊提供了支持spring mvc和spring portlet mvc 的類,還有spring的web模塊提供了對struts和jsf框架的支持。另外此模塊還提供了幾個面向web的任務,例如多部分文件上傳等
- 遠程調用 當通過網絡來訪問其他應用時,某些形式的遠程調用將被用于通訊。spring的遠程調用模塊會使編寫遠程對象很簡單,就像使用本地的pojo一樣。spring支持如:rmi,Hessian,Burlap,JAX-RPC,spring自己的HTTP Invoker。
- java 消息服務(jms) 遠程調用的下面是取決于網絡的可靠性和通訊雙方的可用性,基于消息的通訊是可靠的。spring的jms模塊可以將消息發送到jms隊列和主題;可以幫助創建消息驅動的pojo,能夠處理異步消息。
總結:spring盡量避免重新開發所有事情,并傾向于保留現有的API和框架。通過spring可以輕松集成多種框架為一體,并且能夠享受spring帶來的松耦合和可測試特性。