一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Spring源碼學(xué)習(xí)之spring設(shè)計理念和整體架構(gòu)

 quasiceo 2018-07-23
2017年02月12日 15:35:58
閱讀數(shù):2090

1.Spring的設(shè)計理念:在Java EE的應(yīng)用開發(fā)中,支持POJO和使用JavaBean的開發(fā)方式, 使應(yīng)用面向接口開發(fā),充分支持00 ( 面向?qū)ο螅? 的設(shè)計方法。

2.Spring的整體架構(gòu):

1.SpringloC:包含了最為基本的IoC容器BeanFactory的接口與實現(xiàn),也就是說,在這個Spring的核心包中,不僅定義了IoC容器的最基本接口(BeanFactory),也提供了一系列這個接口的實現(xiàn),如XmlBeanFactory就是一個最基本的BeanFactory (IoC容器),從名字上可以看到,它能夠支持通過XML文件配置的Bean定義信息。除此之外,SpringIoC容器還提供了一個容器系列,如SimpleJndiBeanFactory、 StaticLismbleBeanFactor等。我們知道,單純一個IoC容器對于應(yīng)用開發(fā)來說是不夠的.為了讓應(yīng)用更方便地使用IoC容器 ,還需要在IoC容器的外圍提供其他的支持 ,這些支持包括Resource訪問資源的抽象和定位等 ,所有的這些 ,都是這個Spring IoC模塊的基本內(nèi)容。另外,在BeanFactory接口實現(xiàn)中,除了前面介紹的像BeanFactory那樣最為基本的容器形態(tài)之夕外,Spring還設(shè)計了IoC容器的髙級形態(tài)ApplicaticmContext應(yīng)用上下文供用戶使用,這些ApplicationConlext應(yīng)用上下文 ,如FileSystemXmlApplicationContext,ClassPathXmlAppIicationContext,對應(yīng)用來說, 是IoC容器中更面向框架的使用方式,同樣,為了便于應(yīng)用開發(fā),像國際化的消息源和應(yīng)用支持事件這些特性,也都在這個
模塊中配合IoC容器來實現(xiàn),這些功能圍繞著IoC基本容器和應(yīng)用上下文的實現(xiàn),構(gòu)成了整個Spring IoC模塊設(shè)計的主要內(nèi)容。

2.SpringAOP: 這也是Spring的核心模塊, 圍繞著AOP的增強(qiáng)功能,Spring集成了AspectJ作為AOP的一個特定實現(xiàn),同時還在JVM動態(tài)代理/CGLIB的基礎(chǔ)上, 實現(xiàn)了—個AOP框架 ,作為Spring集成其他模塊的工具,如TransactionProxyFactoryBean
聲明式事務(wù)處理,就是通過AOP集成到Spring中的。在這個模塊中,Spring AOP實現(xiàn)了一個完整的建立AOP代理對象,實現(xiàn)AOP攔截器,直至實現(xiàn)各種Advice通知的過程。在對這個模塊的分析中可以看到,AOP模塊的完整實現(xiàn)是我們熟悉AOP實現(xiàn)技術(shù)的一
個不可多得的樣本。

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)險


好了,今天就到這里,后面就開始分模塊探索了,再接再勵。。。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    麻豆国产精品一区二区三区| 欧美一级黄片免费视频| 久久热这里只有精品视频| 国产麻豆视频一二三区| 国产日韩欧美专区一区| 精品老司机视频在线观看| 亚洲国产成人精品一区刚刚| 富婆又大又白又丰满又紧又硬| 亚洲精品欧美精品一区三区| 日本加勒比在线观看不卡| 免费啪视频免费欧美亚洲| 国产精品白丝一区二区| 在线观看国产成人av天堂野外| 中文字幕熟女人妻视频| 人妻偷人精品一区二区三区不卡 | 日本和亚洲的香蕉视频| 亚洲一区二区三区三州| 日韩毛片视频免费观看| 91在线播放在线播放观看| 亚洲精品福利视频在线观看| 老熟女露脸一二三四区| 97人妻精品免费一区二区| 视频一区二区 国产精品| 国产又大又黄又粗又免费| 91超精品碰国产在线观看| 国产乱久久亚洲国产精品| 中日韩免费一区二区三区| 日韩黄色一级片免费收看| 不卡视频在线一区二区三区| 九九热精品视频免费观看| 欧美一区二区三区99| 欧美国产极品一区二区| 国产免费一区二区三区不卡| 国产一级特黄在线观看| 少妇熟女亚洲色图av天堂| 人体偷拍一区二区三区| 欧美野外在线刺激在线观看| 精品少妇人妻av一区二区蜜桃 | 精品人妻少妇二区三区| 国产欧美日本在线播放| 亚洲最新中文字幕一区|