1. 程式人生 > >Spring框架(一)——初識Spring

Spring框架(一)——初識Spring

一、 Spring 是什麼

  1)Spring 是一個開源框架。
  2)Spring 為簡化企業級應用開發而生. 使用 Spring 可以使簡單的 JavaBean 實現以前只有 EJB 才能實現的功能。
  3)Spring 是一個 IOC(DI) 和 AOP 容器框架。

二、Spring容器的主要核心是什麼

  控制反轉(IOC),傳統的java開發模式中,當需要一個物件時,我們會自己使用new等直接或者間接呼叫構造方法建立一個物件。而在spring開發模式中,spring容器使用了工廠模式為我們建立了所需要的物件,不需要我們自己建立了,直接呼叫spring提供的物件就可以了,這是控制反轉的思想。
  
  依賴注入(DI)

,Spring 使用 JavaBean 物件的 set 方法或者帶引數的構造方法為我們在建立所需物件時將其屬性自動設定所需要的值的過程,就是依賴注入的思想。
  
  面向切面程式設計(AOP),在面向物件程式設計(OOP)思想中,我們將事物縱向抽成一個個的物件。而在面向切面程式設計中,我們將一個個的物件某些類似的方面橫向抽成一個切面,對這個切面進行一些如許可權控制、事物管理,記錄日誌等公用操作處理的過程就是面向切面程式設計的思想。AOP底層是動態代理,如果是介面採用JDK動態代理,如果是類採用CGLIB方式實現動態代理。

三、Spring體系結構組成

這裡寫圖片描述

核心容器:包括Beans、Core、Context、SpEL模組。

  Core模組:封裝了框架依賴的最底層部分,包括資源訪問、型別轉換及一些常用工具類。
  Beans模組:提供了框架的基礎部分,包括反轉控制和依賴注入。其中Bean Factory是容器核心,本質是“工廠設計模式”的實現,而且無需程式設計實現“單例設計模式”,“單例”完全由容器控制,而且提倡面向介面程式設計,而非面向實現程式設計;所有應用程式物件及物件間關係由框架管理,從而真正把你從程式邏輯中把維護物件之間的依賴關係提取出來,所有這些依賴關係都由Bean Factory來維護。
  Context模組:以Core和Beans為基礎,整合Beans模組功能並新增資源繫結、資料驗證、國際化、Java EE支援、容器生命週期、事件傳播等;核心介面是ApplicationContext。
  SpEL模組

:提供強大的表示式語言支援,支援訪問和修改屬性值,方法呼叫,支援訪問及修改陣列、容器和索引器,命名變數,支援算數和邏輯運算,支援從Spring 容器獲取Bean,它也支援列表投影、選擇和一般的列表聚合等。

AOP、Aspects模組:

  AOP模組:Spring AOP模組提供了符合 AOP Alliance規範的面向方面的程式設計(aspect-oriented programming)實現,提供比如日誌記錄、許可權控制、效能統計等通用功能和業務邏輯分離的技術,並且能動態的把這些功能新增到需要的程式碼中;這樣各專其職,降低業務邏輯和通用功能的耦合。
  Aspects模組:提供了對AspectJ的整合,AspectJ提供了比Spring ASP更強大的功能。

資料訪問/整合模組:該模組包括了JDBC、ORM、OXM、JMS和事務管理。

  事務管理模組:該模組用於 Spring 管理事務,只要是 Spring 管理物件都能得到 Spring 管理事務的好處,無需在程式碼中進行事務控制了,而且支援程式設計和宣告性的事務管理。
  JDBC模組:提供了一個JBDC的樣例模板,使用這些模板能消除傳統冗長的JDBC編碼還有必須的事務控制,而且能享受到Spring管理事務的好處。
  ORM模組:提供與流行的“物件-關係”對映框架的無縫整合,包括Hibernate、JPA、MyBatis等。而且可以使用Spring事務管理,無需額外控制事務。
  OXM模組:提供了一個對Object/XML對映實現,將java物件對映成XML資料,或者將XML資料對映成java物件,Object/XML對映實現包括JAXB、Castor、XMLBeans和XStream。
  JMS模組:用於JMS(Java Messaging Service),提供一套 “訊息生產者、訊息消費者”模板用於更加簡單的使用JMS,JMS用於用於在兩個應用程式之間,或分散式系統中傳送訊息,進行非同步通訊。

Web/Remoting模組:Web/Remoting模組包含了Web、Web-Servlet等模組。

  Web模組:提供了基礎的web功能。例如多檔案上傳、整合IOC容器、遠端過程訪問(RMI、Hessian、Burlap)以及Web Service支援,並提供一個Rest Template類來提供方便的Restful services訪問。
  Web-Servlet模組:提供了一個Spring MVC Web框架實現。Spring MVC框架提供了基於註解的請求資源注入、更簡單的資料繫結、資料驗證等及一套非常易用的JSP標籤,完全無縫與Spring其他技術協作。

四、Spring能幫我們做什麼

  1)Spring能幫我們根據配置檔案建立及組裝物件之間的依賴關係。
  Spring根據配置檔案來進行建立及組裝物件間依賴關係,只需要改配置檔案即可
  2)Spring 面向切面程式設計能幫助我們無耦合的實現日誌記錄,效能統計,安全控制。
  Spring 面向切面程式設計能提供一種更好的方式來完成,一般通過配置方式,而且不需要在現有程式碼中新增任何額外程式碼,現有程式碼專注業務邏輯。
  3)Spring能非常簡單的幫我們管理資料庫事務。
  採用Spring,我們只需獲取連線,執行SQL,其他事物相關的都交給Spring來管理了。
  4)Spring還能與第三方資料庫訪問框架(如Hibernate、JPA)無縫整合,而且自己也提供了一套JDBC訪問模板,來方便資料庫訪問。
  5)Spring還能與第三方Web(如Struts、JSF)框架無縫整合,而且自己也提供了一套Spring MVC框架,來方便web層搭建。
  6)Spring能方便的與Java EE(如Java Mail、任務排程)整合,與更多技術整合(比如快取框架)。