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