Spring 框架

     Spring 是一個開源框架,是爲了解決企業應用程序開發複雜性而建立的。框架的主要優點之一就是其分層架構,分層架構容許選擇使用哪個組件,同時爲 J2EE 應用程序開發提供集成的框架。

Spring架構如圖:
數據庫

Spring有三大核心容器:Beans, Core和Context,它們建起了Spring的骨架。
Spring有兩大核心機制:IoC和AOP。

機制:編程

  1. Ioc
    Ioc(Inversion of Control)控制反轉。Ioc的思想就是將設計好的對象交給容器管理,而不是本身直接控制。
    傳統方式下,Employer的構造方法中會建立一個Employee對象;在IoC容器中,建立Employee對象的工做所有交給容器負責,Employer只要告訴容器要給我建立便可。

     
  2. AOP
    AOP(Aspect Oriented Program)面向切面編程。切面是什麼意思呢?比方說你想在一個方法的開頭加個log,或者在數據查詢方法前開啓事務,這些都是切面,AOP就是面向切面編程。
    在原有的基礎上Employer依賴Employee,調用其中的work方法,如今EmployeeProxy代理Employee,在EmployeeProxy的work()方法前加入log代碼,再執行Employee的work()方法。

     

組件:服務器

  1. Beans
    Bean是被實例化,組裝,並被IoC容器所管理的對象。Spring是面向Bean編程(BOP),Bean是Spring的主角。Bean對於Spring就像Java的Object,沒有Bean就沒有Spring。
    Bean的定義由BeanDefinition描述。當Spring成功解析了你的Bean節點後,Spring內部會轉換成BeanDefinition對象,以後全部的操做都是有這個對象完成。BeanDefinition的解析工做主要由BeanDefinitionReader完成。
     
  2. Context
    若是說Bean是演員的話,那麼Context就是舞臺。Context就是Bean關係的集合,這個集合一般叫作Ioc容器。Spring提供了兩種不一樣類型的Ioc容器:BeanFactory和ApplicationContext,ApplicationContext繼承了BeanFactory,包含了BeanFactory的全部功能。
    BeanFactory有三個子類分別是ListableBeanFactory, HierarchicalBeanFactory和AutowireCapableBeanFactory, 它的默認實現是DefaultListableBeanFactory。
    ApplicationContext有兩個子類分別是ConfigurableApplicationContext和WebApplicationContext。ApplicationContext主要有一下功能:標識容器環境,使用BeanFactory建立Bean,維護對象關係,捕獲各類事件。
     
  3. Core
    若是說Bean是演員的話,那麼Core則是這個舞臺上的道具。Core包含Spring的核心工具類,它是其餘組件的基本核心,其中最重要的是它定義了資源的訪問方式。在Core中Resource接口封裝了各類可能的資源類型,對使用者來講屏蔽了文件類型的不一樣。Resource 接口繼承了InputStreamSource接口,這個接口中有個getInputStream方法,返回的是InputStream類。這樣全部的資源都被能夠經過InputStream這個類來獲取,因此也屏蔽了資源的提供者。ResourceLoader接口屏蔽了全部的資源加載者的差別,只須要實現這個接口就能夠加載全部的資源, 它的默認實現是DefaultResourceLoader。Context是把資源的加載、解析和描述工做委託給了ResourcePatternResolver類來完成,他至關於一個接頭人,他把資源的加載、解析和資源的定義整合在一塊兒便於其餘組件使用。 Core組件中還有不少相似的方式。
     
  4. Data
    Spring Data模塊屏蔽底層數據實現方式的差別,提供類似的熟悉的接口用於訪問數據。Data模塊包括JDBC, ORM,JMS以及事務等。
    Spring JDBC是對數據庫操做的一個封裝,屏蔽底層數據庫的差異,封裝了一些用戶不關心的步驟包括建立鏈接,事務,處理異常,關閉鏈接等,使用用戶關注本身的業務工做。
    Spring Transaction是對數據庫事務的封裝,爲了保證操做的ACID,必須使用事務,Spring Transaction則屏蔽底層數據庫的差異,以及單源事務和多源事務的區別。
    Spring ORM對象關係映射,將數據庫表映射成Java對象,操做數據庫就像操做對象同樣。ORM框架有Hibernate, iBatis, JDO等。
    Spring JMS簡化了Java JMS API接口,JMS框架相似JDBC框架,簡化JMS API使用,從而關注消息的產生和消費。
     
  5. Web Spring Web模塊提供了面向Web開發的特性,像基於MVC架構的Restful服務器等。Web模塊包括Web, WebMVC等。 Spring Web提供了上傳文件,基於Servlet監聽等功能。 Spring WebMVC提供了基於MVC架構的Restful服務的實現。     
相關文章
相關標籤/搜索