基礎知識(09) -- Spring 概述

來源:互聯網
上載者:User

標籤:串連   檔案上傳   任務調度   分類   包含   類庫   核心   動態   變化   

Spring概述
-------------------------------------------------------------------------
主要內容:
  1、Spring是什麼
  2、Spring能幫我們做什麼
  3、為什麼需要Spring及Spring的優點
  4、Spring架構圖
  5、幾個概念介紹
-------------------------------------------------------------------------
參考內容:
  1. 開濤的Spring部落格
  2. 私塾線上Spring視頻
  3.《Spring 3.0就這麼簡單》一書
-------------------------------------------------------------------------
思維導圖:


-------------------------------------------------------------------------

一、Spring是什麼                                                       
  Spring是一個開源的輕量級Java SE/Java EE開發應用程式框架,其目的是用於簡化企業級應用程式開發。Spring以反轉控制(Inverse of Control,IoC)和面向切面編程(Aspect Oriented Programming,AOP)為核心,提供了展現層Spring MVC、持久層Spring JDBC以及業務層交易管理等眾多的企業級應用技術,此外,Spring以海納百川的胸懷整合了開源世界裡眾多著名的第三方架構和類庫。

二、Spring能幫我們做什麼                                             

Spring除了不能幫我們寫商務邏輯,其餘的幾乎什麼都能協助我們簡化開發:
(1)方便解耦,簡化開發
  通過Spring的IoC容器,可以將對象之間的依賴關係交由Spring進行控制,避免寫入程式碼所造成的過度程式耦合,Spring能幫我們管理對象之間的依賴關係。在傳統程式開發中,建立對象及組裝對象間的依賴關係由我們在程式內部自己進行控制,這樣會加大各個對象間耦合,如果我們要修改對象間的依賴關係就必須修改原始碼、重新編譯、部署;而如果採用Spring的話,則由Spring來協助我們建立及組裝對象間的依賴關係(根據設定檔或註解)
(******
  我的理解:此功能是Spring中最重要、最核心的功能
    1.對象的建立由IoC/DI來控制
    2.對象間的依賴關係由IoC/DI來控制
    3.通過設定檔或者註解就能實現上面第1、2兩點的功能,很方便
********)

(2)AOP編程的支援
  通過Spring提供的AOP功能,我們可以很方便地進行面向切面編程,許多不容易用傳統物件導向編程(OOP)實現的功能都可以通過AOP輕鬆應對。在傳統程式開發中,當我們要進行一些日誌記錄、許可權控制、效能統計時,我們可能在需要的對象或方法中進行硬式編碼方式,而這部分的代碼會大量的重複並且滲透到各個方法中去。如果採用Spring的話,就可以把日誌記錄、許可權控制、效能統計等功能從核心商務邏輯中分離出來,通過Spring支援的面向切面編程,在需要這些功能的地方動態添加這些功能,無需滲透到各個需要的方法或對象中,Spring只是需要通過設定檔或者註解就能實現AOP的功能。
(******
  我的理解:用了AOP後程式結構的變化:
    1.通用功能模組的代碼(日誌記錄、許可權控制、效能統計)可以重複利用,而且不用通過硬式編碼方式
    2.核心的商務邏輯代碼更加清晰,因為沒有了日誌記錄、許可權控制、效能統計 這些功能的寫入程式碼代碼
    3.通過設定檔xml或者註解就可以把 核心業務代碼和通用模組功能結合起來,很方便
********)
(3)管理資料庫事務
  在傳統程式開發中,我們如何來完成資料庫交易管理呢? 需要一系列"擷取串連、執行SQL、提交或復原事務、關閉串連",而且還要保證在最後一定要關閉串連,這是多麼可怕的事情,而且很無聊;如果採用Spring來協助我們管理事務的話,我們只需要擷取串連、執行SQL,其它的都交給Spring來管理了。
(******
  我的理解:Spring的交易管理是建立在AOP的基礎之上的,通過設定檔或者註解就可以搞定,很方便
********)
(4)Spring能很好的與第三方資料訪問框架組成
  Spring還提供了與第三方資料訪問架構(如Hibenate、JPA)無縫整合,而且自己也提供了一套JDBC訪問模板,來方便資料庫訪問。
(5)Spring能很好的與第三方Web框架組成
  Spring提供了與第三方Web架構無縫整合,而且自己也提供了一套Spring MVC架構,來方便web層搭建
(6)Spring能很好的與Java EE整合
  Spring能方便的與Java EE(如Java Mail、任務調度)正好,與更多技術整合(比如緩衝架構)

三、為什麼需要Spring及Spring的優點                                

(1)Spring是一個非常輕量級的容器
  Spring以集中的、自動化的方式進行應用程式物件建立和裝配,負責對象建立和裝配,管理對象生命週期,能組合成複雜的應用程式。Spring容器是非侵入式的(不需要依賴任何Spring特定類),而且完全採用POJOs進行開發,使應用程式更容易測試、更容器管理,並且不需要依賴任何伺服器,可以部署在任意環境(Java SE或Java EE)
(2)Spring提供AOP編程支援
  AOP是Aspect Oriented Programming的縮寫,意思是面向切面編程,提供從另一個角度來考慮程式結構以完善物件導向編程(相對於OOP),即可以通過在編譯期間、裝載期間或運行期間實現在不修改原始碼的情況下給程式動態添加功能的一種技術。通俗點說就是把可重用的功能提取出來,然後將這些通用功能在合適的時候織入到應用程式中;比如安全控制、日誌記錄等通用功能,我們可以把這些功能提取出來,然後在程式執行的合適地方織入這些代碼並執行它們,從而完成需要的功能並複用了這些功能。
(3)簡單的資料庫交易管理
  在使用資料庫的應用程式當中,自己管理資料庫事務是一項很讓人頭痛的事,而且很容器出現錯誤,Spring支援可插入的交易管理,而且無需JEE環境支援,通過Spring管理事務可以把我們從交易管理中解放出來,更加專註於核心業務的開發
(4)JDBC抽象及ORM架構支援
  Spring使JDBC更加容易使用;提供DAO支援,非常方便整合第三方ORM架構,比如Hibernate等,並且完成支援Spring事務和使用Spring提供的一致的異常體系。
(5)靈活的Web層支援
  Spring本身提供一套非常強大的MVC架構,而且可以非常容易的與第三方MVC框架組成,比如Struts等。
(6)簡化各種技術整合
  Spring提供對Java Mail、任務調度、JMX、JMS、JNDI、EJB、動態語言、遠端存取、Web Service等的整合.

四、Spring架構圖                                                      

(1)核心容器:包括Core、Beans、Context、EL模組
  Core模組:封裝了架構依賴的最底層部分,包括資源訪問、類型轉換及一些常用工具類。
  Beans模組: 提供了架構的基礎部分,包括反轉控制和依賴注入。Spring核心模組實現了IoC的功能,它將類和類之間的依賴關係從代碼中脫離出來,用配置的方式進行依賴關係描述,由IoC容器負責依賴類之間的建立、拼接、管理、擷取等工作。其中BeanFactory介面是Spring架構的核心介面,本質是"原廠模式"的實現,而且無需編程實現‘單例設計模式‘,單例完全由容器控制,而且提倡面向介面編程,而且非面向實現編程;所有應用程式物件及對象間關係由架構管理,從而真正把你從程式邏輯中把維護對象之間的依賴關係提取出來,所有這些依賴關係都由BeanFactory來維護。
  Context模組: 以Core和Beans為基礎,整合Beans模組功能並添加資源綁定、資料驗證、國際化、Java EE支援、容器生命週期、事件傳播等,核心介面是ApplicationContext.
  EL模組: 提供強大的運算式語言支援,支援訪問和修改屬性值、方法調用、支援訪問及修改數組、容器和索引器、命名變數、支援算數和邏輯運算、支援從Spring容器擷取Bean、支援列表投影、選擇、一般的列表彙總等。
(2)AOP、Aspects模組:
  AOP模組: Srping AOP模組提供了符合AOP Alliance規範的面向方面的編程實現,提供比如日誌記錄、許可權控制、效能統計等通用功能和商務邏輯分類的技術,並且能動態把這些功能添加到需要的代碼中,這樣核心業務代碼和通用模組代碼各專其職,降低核心商務邏輯和通用功能的耦合。
  Aspects模組: 提供了對AspectJ的整合
(3)資料訪問/整合模組:
  事務模組:該模組用於Spring管理事務,只要是Spring管理對象都能得到Spring管理事務的好處,無需在代碼中進行事務控制了,而且支援編程和聲明性的交易管理。
  JDBC模組: 提供了一個JDBC的範例模板,使用這些模板能消除傳統冗長的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/Remoting模組: 包括:Web、Web-Servlet、Web-Struts、Web-porlet
  Web模組: 提供了基礎的Web功能。例如多檔案上傳、整合IoC容器、遠程過程訪問以及Web Service支援
  Web-Servlet模組:提供了一個Spring MVC Web架構實現,Spring MVC架構提供了基於註解的請求資源注入、更簡單的資料繫結、資料驗證等功能。
  Web-Struts模組: 提供了與Struts無縫整合,Struts1.x和Struts2.x都支援。
(5)Test模組:
  Spring支援Junit和TestNG測試架構,而且還額外提供了一些基於Spring的測試功能,比如在測試Web架構時,類比Http請求的功能。

五、幾個概念介紹                                                      

(1)應用程式
  是能完成我們所需要功能的成品,比如:購物網站、OA系統
(2)架構
  是能完成一定功能的半成品,比如我們是要架構進行購物網站開發;架構做一部分的功能,我們自己做一部分的功能,這樣應用程式就建立出來了。而且架構規定了你在開發應用程式時的整體架構,提供了一些基礎的功能,還規定了類和對象的如何建立、如何協作等,從而簡化我們開發,讓我們專註於商務邏輯開發。
(3)非侵入式設計
  從架構角度可以這樣理解,無需繼承架構提供的類,這種設計就可以看做是非侵入式設計;如果繼承了這些架構類,就是侵入式; 採用侵入式:如果以後想要更換架構的話,那麼之前寫的代碼幾乎無法重用;如果非侵入式設計則之前寫過的代碼仍然可以繼續使用。
(4)輕量級及重量級
  輕量級是相對於重量級而言的,輕量級一般就是非侵入式的、所依賴的東西非常少、資源佔用非常少、部署簡單等等,而重量級正好相反。
(5)POJO
  POJO(Plain Old Java Objects)簡單的Java對象,它可以包含商務邏輯或持久化邏輯,但不但當任何特殊角色且不繼承或不實現任何其它Java架構的類或介面。

 

基礎知識(09) -- Spring 概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.