3.Spring MVC:對于大多數(shù)企業(yè)應(yīng)用而言, Web應(yīng)用已經(jīng)是一種普遍的軟件發(fā)布方式,而在Web應(yīng)用的設(shè)計中, MVC模式已經(jīng)被廣泛使用了。 在java的社區(qū)中,也有很多類似的MVC框架可以選擇,而且這些框架往往和WebUI設(shè)計整合在一起,對于定位于提供整體平臺解決方案的Spring,這樣的整合也是不可缺少的。Spring
MVC模塊以DispatcherServlet為核心,實現(xiàn)了MVC模式,包括怎樣與Web容器環(huán)境的集成,Web請求的攔裁.分發(fā)、處理和ModelAndView數(shù)據(jù)的返回,以及如何集成各種UI視圖展現(xiàn)和數(shù)據(jù)表現(xiàn),如PDF,Excel等,
通過這個模塊,可以完成Web的前端設(shè)計。
4.Spring JDBC/SpringORM:對于關(guān)系數(shù)據(jù)庫的處理, Java提供了JDBC來進(jìn)行操作,但在實際的應(yīng)用中,單純使用JDBC的方式還是有些繁瑣, 所以在JDBC規(guī)范的基礎(chǔ)上,Spring對JDBC做了一層封裝,使通過JDBC完成的對數(shù)據(jù)庫的操作更加簡潔,
SpringJDBC包提供了JdbcTemplale作為模板類 ,封裝了基本的數(shù)據(jù)庫操作方法,如數(shù)據(jù)的査詢、更新等,另外, SpringJDBC還提供了RDBMS的操作對象,這些操作對象可以使應(yīng)用以更面向?qū)ο蟮姆椒▉硎褂肑DBC, 比如可以使用MappingSqlQuery將數(shù)據(jù)庫數(shù)據(jù)記錄直接映射到對象集合,類似一個極為簡單的ORM
工具。
除了通過SpringJDBC對數(shù)據(jù)庫進(jìn)行操作外,Spring還提供了許多對ORM工具的封裝,
這些封裝包括了常用的ORM工具,如Hibernate iBatis等,這一層封裝的作用是讓應(yīng)用更方便地使用這些ORM 工具,而不是替代這些ORM工具,比如可以把對這些工具的使用和Spring提供的聲明式事務(wù)處理結(jié)合起來。同時, Spring還提供了許多模板對象,如HibernateTemaplate這樣的工具來實現(xiàn)對Hibernate的驅(qū)動,這些模板對象往往包裝使用Hibernate的一些通用過程,比如Session的獲取和關(guān)閉、事務(wù)處理的關(guān)聯(lián)等,從而把一些通用的恃性實現(xiàn)抽象到Spring中來,更充分地體現(xiàn)了Spring的平臺作用。
5.Spring事務(wù)處理:Spring事務(wù)處理是一個通過Spring AOP實現(xiàn)自身功能增強(qiáng)的典型模塊。在這個模塊中, Spring把在企業(yè)應(yīng)用開發(fā)中事務(wù)處理的主要過程抽象出來。這個聲明式事務(wù)處理的實現(xiàn),使開發(fā)人員只需要在IoC容器中對事務(wù)屬性進(jìn)行配置即可完成,同時, 這些事務(wù)處理的基本過程和具體的事務(wù)處理器實現(xiàn)是無關(guān)的,也就是說,應(yīng)用可以選擇不同的具體的事務(wù)處理機(jī)制,如JTA,JDBC,
Hibernate等。 因為使用了聲明式事務(wù)處理.具體的事務(wù)處理機(jī)制被納入Spring事務(wù)處理的統(tǒng)一框架中完成 , 并完成與具體業(yè)務(wù)代碼的解耦。 在這個模塊中,可以看到一個通用的實現(xiàn)聲明式事務(wù)處理的基本過程,比如怎樣配置事務(wù)處理的攔截器,怎樣讀人事務(wù)配置屬性, 并結(jié)合這些事務(wù)配置屬性對事務(wù)對象進(jìn)行處理,包栝事務(wù)的創(chuàng)建、掛起、提交、回滾等基本過程, 還可以看到具體的事務(wù)處理器(DataSourceTransactionManage,
HibernateTransactionManager、JtaTransactionManager等)
是怎樣封裝不同的事務(wù)處理機(jī)制(JDBC、 Hibernate, JTA等) 的。
6.Spring遠(yuǎn)端調(diào)用:Spring為應(yīng)用帶來的一個好處就是能夠?qū)?yīng)用解耦。應(yīng)用解耦,一方面可以降低設(shè)計的復(fù)雜性,一方面,可以在解耦以后將應(yīng)用模塊分布式地部署,從而提髙系統(tǒng)整體的性能。
在后一種應(yīng)用場景下, 會用到Spring的遠(yuǎn)端調(diào)用, 這種遠(yuǎn)
端調(diào)用是通過Spring的封裝從Spring應(yīng)用到Spring應(yīng)用之間的端到端調(diào)用,在這個過程中,通過Spring的封裝, 為應(yīng)用屏蔽了各種通信和調(diào)用細(xì)節(jié)的實現(xiàn),同時. 通過這一層的封裝 ,使應(yīng)用可以通過選擇各種不同的遠(yuǎn)端調(diào)用來實現(xiàn), 比如可以使用HTTP
調(diào)用器(以HTTP協(xié)議為基礎(chǔ)的),
可以使用第三方的二進(jìn)制通信實現(xiàn)Hessian/Burlap甚至還封裝了傳統(tǒng)Java技術(shù)中的RMI調(diào)用。
7.Spring應(yīng)用。
小結(jié):在我們平時的開發(fā)中,用到最多的場景就是使用SSH框架來完成企業(yè)應(yīng)用的開發(fā),取代傳統(tǒng)的EJB笨重的開發(fā)模式。在SSH架構(gòu)中 Struts作為Web UI層、 Spring作為中間件平臺, Hibernate作為數(shù)據(jù)持久化工具(ORM工具)
來操作關(guān)系數(shù)據(jù)庫。在這個架構(gòu)中, Hibernate是一個獨立的ORM數(shù)據(jù)持久化產(chǎn)品。比較Spring JDBC和Hibernae對數(shù)據(jù)庫操作的支持,對Spring來說,其對數(shù)據(jù)持
久化的支持,雖然也有JDBC的封裝,可以完成一些將簡單的數(shù)據(jù)記錄到Java數(shù)據(jù)對象的轉(zhuǎn)換和映射工作,但和Hibernate相比, 功能上畢競還是有一些單薄,比如Hibernate還提供了各種數(shù)據(jù)的査詢、方便的對象和關(guān)系數(shù)據(jù)的映射等。因此,在大多數(shù)應(yīng)用中,將Hibernate和Spring—起使用是非常普遍的,因為一方面Hibenate提供了完整的和已經(jīng)成為事實標(biāo)準(zhǔn)的功能,另一方面, Spring也提供了與Hibernated的集成和封裝,包括聲明式事務(wù)處理的封裝等。對于Web 層而言,盡管Spring提供了自己的MVC實現(xiàn),但與Struts的流行程度相比,這個Spring
MVC的使用并不廣泛, 畢竟在Web開發(fā)領(lǐng)域, Struts成名更早。在這個架構(gòu)組合中,Spring起到的是一個應(yīng)用平臺的作用,通過Spring的集成,可以讓應(yīng)用在直接部署在Tomcat這個Web服務(wù)器上 ,因為作為一個直接依賴JVM的輕量級框架, Spring的部署方式就是一個簡單的jar包, 不需要以一個J2EE應(yīng)用服務(wù)器的形式出現(xiàn),從而使整個應(yīng)用在Tomcat這樣的Web服務(wù)器上直接運行起來,非常簡潔。
Spring的優(yōu)點:
1.非侵入性:其目標(biāo)是使應(yīng)用程序代碼對框架的依賴最小化,應(yīng)用代碼可以在沒有Spring或者其他容器的情況下正常運行
2.一致性的編程:使應(yīng)用直接使用POJO開發(fā) ,從而可以與運行環(huán)境 (如應(yīng)用服務(wù)器) 隔離開來。
3.Spring推動應(yīng)用的設(shè)計鳳格向面向?qū)ο蠹懊嫦蚪涌诰幊剔D(zhuǎn)變,提髙了代碼的重用性和可測試性。
4.Spring改進(jìn)了體系結(jié)構(gòu)的選擇,雖然作為應(yīng)用平臺, Spring可以幫助我們選擇不同的技術(shù)實現(xiàn), 比如從Hiberante到其他ORM工具,從Struts切換到Spring MVC,盡管我們通常不會這樣做,但是我們在技術(shù)方案上選擇使用Spring作為應(yīng)用平臺, Spring至少為我們提供了這種可能性和選擇, 從而降低了平臺鎖定的風(fēng)險
好了,今天就到這里,后面就開始分模塊探索了,再接再勵。。。