1. 程式人生 > >spring簡介

spring簡介

con ans pac junit 架構 img 國際 版本 上下文

初學spring,想慢慢的把自己對spring的學習理解記錄下來,當然因為是初學,在記錄的過程中會參照各位大牛的理解思路,因為在前輩們的理解中菜鳥才能更快的進步。

一、什麽是Spring:

百度一下會發現一致的概念是:Spring是一個開源的輕量級Java SE(Java 標準版本)/Java EE(Java 企業版本)開發應用框架,其目的是用於簡化企業級應用程序開發。應用程序是由一組相互協作的對象組成。、但是發現看完這句話並不能體會到spring的強大,沒事先上圖看一下spring長啥樣

技術分享

這是spring的結構圖,然而直到他長啥樣了現在貌似並不怎麽認識他,沒事,接下就一點一點認識spring的各個組成部分

二、spring核心架構體系(此處參照:http://www.cnblogs.com/wxisme/p/4751397.html)

由上圖我們會看到,spring是由五個部分組成的: Core Container、AOP、Web、Data Access、Test,我想將spring比作一個大家族的大管家,

而這五個部分是大管家的五項能力,沒有卓越的能力,大管家又怎麽能管理好一個家族呢。接下來我們就看一下大管家到底有啥本領:

1.Core Container------核心容器

1)Core 模塊:是框架的最底層的部分,spring也是代碼不是嗎,肯定也是遵守編程的通用知識的,比如類型轉換、資源訪問等,也就是大管家也是人嘛,人的基本樣子還是有的;

2)Beans模塊:是框架基礎模塊,包括了IOC的依賴註入和反轉控制,核心的Bean Factory,大管家需要在家中缺少人手的時候能夠協調各處的人手;

3)Context模塊:以Core和Beans為基礎,集成Beans模塊功能並添加資源綁定、數據驗證、國際化、Java EE支持、容器生命周期、事件傳播等;核心接口是ApplicationContext。大管家在家中必須由必要的權利,Context就像大管家擁有管理家中事務的權利一樣,能夠代表Spring的上下文。

4)EL模塊提供強大的表達式語言支持,支持訪問和修改屬性值,方法調用,支持訪問及修改數組、容器和索引器,命名變量,支持算數和邏輯運算,支持從Spring 容器獲取Bean,它也支持列表投影、選擇和一般的列表聚合等。

顯而易見EL是大管家的表達能力

2.AOP、ASpects------面向切面編程

AOP的思想類似於在一個家中具體到某一件事的執行時,大管家要安排這件事哪些人來做,每個人的任務是啥,怎麽開始,怎麽收尾,整個流程操控一遍。

  • AOP 模塊提供了面向方面的編程實現,允許你定義方法攔截器和切入點對代碼進行幹凈地解耦,它實現了應該分離的功能。

  • Aspects 模塊提供了與 AspectJ 的集成,這是一個功能強大且成熟的面向切面編程(AOP)框架。

  • Instrumentation 模塊在一定的應用服務器中提供了類 instrumentation 的支持和類加載器的實現。

  • Messaging 模塊為 STOMP 提供了支持作為在應用程序中 WebSocket 子協議的使用。它也支持一個註解編程模型,它是為了選路和處理來自 WebSocket 客戶端的 STOMP 信息

3.Data Access數據訪問/集成

  • Transactions事務模塊:該模塊用於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用於用於在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。

4.WEB

Web 層由 Web,Web-MVC,Web-Socket 和 Web-Portlet 組成,它們的細節如下:

  • Web 模塊提供了基本的面向 web 的集成功能,例如多個文件上傳的功能和使用 servlet 監聽器和面向 web 應用程序的上下文來初始化 IoC 容器。

  • Web-MVC 模塊包含 Spring 的模型-視圖-控制器(MVC),實現了 web 應用程序。

  • Web-Socket 模塊為 WebSocket-based 提供了支持,而且在 web 應用程序中提供了客戶端和服務器端之間通信的兩種方式。

  • Web-Portlet 模塊提供了在 portlet 環境中實現 MVC,並且反映了 Web-Servlet 模塊的功能。

5.Test

測試模塊支持對具有 JUnit 或 TestNG 框架的 Spring 組件的測試。

三、這樣我們就了解了spring的具體是什麽:

1)、Spring的核心是一個輕量級(Lightweight)的容器(Container)。 2)、Spring是實現IoC(Inversion of Control)容器和非入侵性(No intrusive)的框架。 3)、Spring提供AOP(Aspect-oriented programming)概念的實現方式。 4)、Spring提供對持久層(Persistence)、事物(Transcation)的支持。 5)、Spring供MVC Web框架的實現,並對一些常用的企業服務API(Application Interface)提供一致的模型封裝。 6)、Spring提供了對現存的各種框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。 總之,Spring是一個全方位的應用程序框架。 四、我們也大概了解spring能做什麽:

1).Spring能幫我們根據配置文件創建及組裝對象之間的依賴關系。

2).Spring 面向切面編程能幫助我們無耦合的實現日誌記錄,性能統計,安全控制。

3)、在傳統應用程序當中,我們如何來完成數據庫事務管理?需要一系列“獲取連接,執行SQL,提交或回滾事務,關閉連接”,而且還要保證在最後一定要關閉連接,多麽可怕的事情,而且也很無聊;如果采用Spring,我們只需獲取連接,執行SQL,其他的都交給Spring來管理了,簡單吧。所以,Spring能非常簡單的幫我們管理數據庫事務。

4)、Spring還提供了與第三方數據訪問框架(如Hibernate、JPA)無縫集成,而且自己也提供了一套JDBC訪問模板,來方便數據庫訪問。

5)、Spring還提供與第三方Web(如Struts、JSF)框架無縫集成,而且自己也提供了一套Spring MVC框架,來方便web層搭建。

6)、Spring能方便的與Java EE(如Java Mail、任務調度)整合,與更多技術整合(比如緩存框架)。

spring簡介