Spring的設計理念和總體架構

1.爲何要學習spring?java

     1.1設計理念和目標web

        首先要了解spring的設計理念和目標,能夠這麼說,spring爲開發者提供的是一個一站式的輕量級應用開發框架(平臺),做爲平臺,spring抽象了咱們算法

        在許多應用開發中遇到的共性問題,同時,做爲一個輕量級的應用開發框架,spring和傳統的J2EE開發相比,有其自身的特色,經過這些自身的特色spring

          充分體現了它的設計理念:在java EE的應用開發中,支持POJO和使用JavaBean的開發方式,使應用面向接口開發,充分支持OO(面向對象)的設計方              式數據庫

 

      好比,在java EE應用開發中,傳統的EJB開發須要依賴按照J2EE規範實現的J2EE應用服務器,咱們的應用在設計,特別是實現時,每每須要一系列的接口標        準 纔可以在應用服務器的環境中獲得測試和部署,這種開發方式,使應用在可測試性和部署上都會受到一些影響,spring的設計理念採用了相對EJB而言的          輕量級開發思想,即便用POJO的開發方式,只須要使用簡單的java對象或者JavaBean就能進行Java EE開發,這樣開發入門,測試,應用部署都獲得了簡化編程

 

     另外一方面,在咱們的應用開發中,每每會涉及複雜的對象耦合關係,若是在java代碼中處理這些耦合關係,對代碼的維護性和應用擴展性會帶來不少不便數組

    而若是使用spring做爲應用開發平臺,經過使用spring的IOC容器,能夠對這些耦合關係實現一個文本化,外部化的工做,也就是說,經過一個或幾個XML服務器

    文件,就能夠方便地對應用對象的耦合關係進行瀏覽,修改和維護,這樣,能夠很大程度簡化應用開發,同時,經過IOC容器的依賴反轉,把依賴關係的管理架構

     從java對象中解放出來,交給了IOC容器來完成,從何完成了對象直接的關係解耦,原來對象——對象的關係,轉化爲對象——IOC容器——對象的關係框架

 

       做爲應用平臺,spring與UNIX/WINDOWS這樣傳統意義的操做系統在計算機的做用相似,即做爲用戶和機器之間的平臺,同時爲用戶使用底層的機器資源提         供了應用開發環境,,不一樣點在於,操做系統關心得是對存儲,計算,通訊,外圍設備等物理資源的管理,並在管理的基礎之上,給用戶提供了一個統一的          服務接口,而對於spring這樣的javaEE企業應用開發,其關心的是一些企業應用資源的使用,好比數據的持久化 ,數據集成,事務處理,消息中間件,web           應用,分佈式計算等對高校可靠處理企業數據方法的技術抽象,雖然開發模式不一樣,但出發點是同樣的

         從理解應用開發和應用平臺二者的關係角度出發,能夠換一種視角體會spring的設計理念,在設計上把spring劃分爲核心,組件和應用3個基本層次

1.2層次劃分與核心部分

在這樣的層次劃分中,首先會看到,spring體系的核心,相似操做系統的Kernel(核心),即IOC容器和AOP模塊,那麼對於操做系統的Kernel來講,進程調度器的設計是其關鍵部分,經過進程調度器,一方面使用「進程」這個概念來抽象物理的計算資源,另外一方面,能夠經過調度算法的設計來實現對計算資源的高效使用。對spring來講,一方面,經過IOC容器來管理POJO對象,以及他們相互之間的耦合關係,使企業的數據資源能夠經過簡單的java語音來抽象和描述,另外一方面,能夠經過AOP,以動態和非侵入式的方式來加強功能,做爲核心,咱們能夠把IOC容器和AOP模塊看作spring的Kernel ,是平臺實現的核心部分

    1.3spring的體系 

        另外,在spring的體系中,咱們還會看到,在IOC容器和AOP這兩個核心模塊的支持下,spring簡化了Java EE所進行的開發,這種簡化指,咱們可以再也不          EJB 這麼厚重的環境中,使用javaEE 的基本服務,爲應用開發提供了許多即開即用的系統組件和服務,這些服務涵蓋了javaEE的各個基本服務,對於其餘的服      務  也能夠動態的擴展到spring體系中(只要依據IOC和AOP所約定好的特定模式),在spring體系中能夠包括咱們不少常常用到的服務,好比事務處理,WEB      MVC,JDBC,ORM,遠端調用,從對用戶的價值,這些服務相對來講是不可忽視的

2 瞭解spring的總體架構

    2.1spring框架是一個分層架構,它包含一系列的功能要素,並被分爲大約20個模塊。

    

這些模塊被總結爲如下幾個部分。

(1)Core Container

       Core Container(核心容器)包含有Core、Beans、Context和Expression Language模塊。

       Core和Beans模塊是框架的基礎部分,提供IOC(控制反轉)和依賴注入特性。這裏的基礎概念是BeanFactory,它提供了Factory模式的經典實現來消除對程         序性單例模式的須要,並真正的容許你從程序邏輯中分離出依賴關係和配置。

       Core模塊主要包含spring框架基本的核心工具類,spring的其餘組件都要使用到這個包裏的類,core模塊是其餘組件的基本核心。固然你也能夠在本身的應          用系統中使用這些工具類,Beans模塊是全部應用都要用到的,它包含訪問配置文件、建立和管理bean以及進行Inversion of Control/ Dependency Injection操做相關的全部類。

      Context模塊構建於Core和Beans模塊基礎之上,提供了一種相似於JNDI註冊器的框架式的對象訪問方法。Context模塊繼承了Beans的特性,爲了spring核心   提供了大量擴展,添加了對國際化、時間傳播、資源加載個對Context的透明建立的支持。ApplicationContext接口是Context模塊的關鍵。

      Expression Language模塊提供了一個強大的表達式語言用於在運行時查詢和操縱對象。該語言支持設置/獲取屬性的值,屬性的分配,方法的調用,訪問數組上下文、容器和索引器、邏輯和算術運算符以及從spring的IOC容器中根據名稱檢索對象。

(2) Data Access(數據訪問)/Integration(集成)

          Data Access/Integration層包含有JDBC、ORM、OXM、JMS和Transaction模塊。

         JDBC模塊提供了一個JDBC抽象層,它能夠消除冗長的JDBC編碼和解析數據庫廠商特有的錯誤代碼。這個模塊包含了spring對JDBC數據訪問進行封裝的全部類。

         ORM:利用ORM封裝包,能夠混合使用全部Spring提供的特性進行O/R映射。

    OXM:提供了一個對Object/XMl映射實現的抽象層。

         JMS:提供了一些製造和消費消息的特性。

        Transaction:支持編程和生命性的事務管理,這些事務類必須實現特定的接口,而且對全部的POJO都適用

相關文章
相關標籤/搜索