SSH框架01、Spring概述

摘自:《Java EE互聯網輕量級框架整合開發SSM框架(Spring+SpringMVC+MyBatis)和Redis實現》

一、介紹

Spring是一個容器,通過反轉控制(IoC-Inversion Of Control)和依賴注入(DI)來實現高內聚/低耦合的應用。除此之外它可以整合很多第三方框架,它還提供面向切面編程(AOP-Aspect Oriented Programming)的能力,對數據庫事務的管理尤其方便。

二、Spring是什麼

Spring是一個開源的輕量級JavaSE(Java標準版本)/Java EE(Java企業版本)開發應用框架,其目的是用於簡化企業級應用程序開發。在傳統應用程序開發中,一個完整的應用是由一組相互協作的對象組成的。所以開發一個應用除了要開發業務邏輯之外,最多的是關注使這些對象協作來完成所需功能的同時,實現高內聚、低耦合。所以,業務邏輯的開發是不可避免的。如果有個框架可以幫我們來創建對象及管理這些對象之間的依賴關係,能通過配置方式來創建對象,管理對象之間的依賴關係,我們不需要通過工廠和生成器來創建及管理對象之間的依賴關係,這樣我們必然會減少許多工作量,加快開發。Spring框架問世之初主要就是來完成這個功能。
Spring框架除了幫我們管理對象及其依賴關係,還提供像通用日誌記錄、性能統計、安全控制、異常處理等面向切面的能力,可以幫助我們管理最頭疼的數據庫事務,同時,它本身提供了一套簡單的JDBC(Java DataBase Connection)訪問實現,能與第三方數據庫訪問框架集成(如Hibernate、JPA),與各種Java EE技術整合(如Java Mail、任務調度等等),提供一套自己的web框架SpringMVC,而且還能非常簡單的與第三方web框架集成。從這裏我們可以認爲Spring是一個超級粘合平臺,除了自己提供功能外,還提供粘合其他技術和框架的能力,從而是我們可以更自由的選擇使用什麼技術進行開發。而且不管是JavaSE(c/s架構)應用程序還是JavaEE(B/S架構)應用程序都可以使用這個平臺進行開發。讓我們來深入看一下Spring到底能幫我們做些什麼?

三、Spring能幫我們做什麼

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

傳統程序開發,創建對象及組裝對象間依賴關係由我們在程序內部進行控制,這樣會加大各個對象間的耦合,如果我們要修改對象間的依賴關係就必須修改源代碼,重新編譯、部署;而如果纔有Spring,則由Spring根據配置文件來進行創建及組裝對象間依賴關係,只需要改配置文件即可,無需重新編譯。

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

當我們要進行一些日誌記錄、權限控制、性能統計等工作時,在傳統應用程序當中我們可能在需要的對象或方法中進行,而且比如權限控制、性能統計大部分是重複的,這樣代碼中就存在大量重複代碼,即使把通用部分提取出來,仍舊存在重複調用,像性能統計我們可以只是在必要時才進行,在診斷完畢後要刪除這些代碼;還有日誌記錄,比如記錄一些方法訪問日誌、數據訪問日誌等等,這些都會滲透到各個訪問方法中;還有權限控制,必須在方法執行時開始進行審覈,可見這些工作急需優化。如果纔有Spring,這些日誌記錄/權限控制/性能統計從業務邏輯中分離出來,通過Spring支持的面向切面編程能提供一種更好的方式來完成上述功能。通過配置方式,而不需要在現有代碼中添加任何額外代碼,使現有代碼專注業務邏輯。

3、Spring能非常簡單的幫我們管理數據庫事務

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

4、除以上之外,Spring還可以:

a.與第三方數據庫訪問框架(如Hibernate、JPA)無縫集成,而且自己也提供一套JDBC訪問模板,來方便數據庫訪問。
b.與第三方web(如Struts/JSF)框架無縫集成,而且自己也提供一套SpringMVC框架,來方便web層搭建。
c.與JavaEE(如Java Mail、任務調度)整合,與更多技術整合(比如緩存框架)。

四、Spring的優點

1、關鍵概念:

a.應用程序:能完成我們所需要功能的成品,比如購物網站、OA系統。
b.框架:能完成一定功能的半成品,比如我們可以使用框架進行購物網站的開發;框架做一部分功能,我們自己做一部分功能,輔助高效工作。而且框架規定了你在開發應用程序時的整體架構,提供了一些基礎功能,還規定了類和對象的如何創建、如何協作等,從而簡化我們的代碼編寫,讓我們專注於業務邏輯開發。
c.非侵入式設計:從框架角度可以這樣理解,無需繼承框架提供的類,這種設計就可以看作是非侵入式設計,如果繼承了這些框架類,就是侵入式設計,如果以後想更換框架,之前寫過的代碼幾乎無法重用,如果是非侵入式設計則之前寫過的代碼仍然可以繼續使用。
d.輕量級與重量級:輕量級是相對於重量級而言的,輕量級一般就是非侵入式的、所依賴的東西非常少、資源佔用非常少、部署簡單等等,其實就是比較容易使用,而重量級正好相反。
e.POJO:(Plain Ordinary Java Object)簡單的Java對象。它可以包含業務邏輯或持久化邏輯,但不擔當任何特殊角色且不繼承或不實現任何其他Java框架的類或接口。
f.容器:在日常生活中容器就是一種盛放東西的器皿,從程序設計角度看就是裝對象的對象,因爲存在放入、拿出等操作,所以容器還要管理對象的生命週期。
g.控制反轉:即Inversion of Control,縮寫爲IoC,控制反轉還有一個名字叫做依賴注入(Dependency Injection),就是由容器控制程序之間的關係,而非傳統實現中,由程序代碼直接操作操控。
h.Bean:一般指容器管理對象,在Spring中指Spring IoC容器管理對象。
Spring框架是面向JavaSE/EE的一套一站式輕量級的開源框架,可以提供以下功能:

2、Spring的優點

a.非常輕量級的容器:以集中的、自動化的方式進行應用程序對象創建和裝配,除此之外還會負責管理對象生命週期,能組合成複雜的應用程序。Spring容器是非侵入式的(不需要依賴任何Spring特定類),而且完全採用POJOs進行開發,使應用程序更容易測試、更容易管理。而且核心JAR包非常小,Spring3.0.5不到1M,而且不需要依賴任何應用服務器,可以部署在任何環境(JavaSE或JavaEE)。
b.AOP:AOP 是 Aspect Oriented Programming 的縮寫,意思是面向切面編程。從另一個角度來考慮程序結構以完善面向對象編程(OOP),即可以通過在編譯期間、裝載期間或運行期間實現在不修改源代碼的情況下給程序動態添加功能的一種技術。通俗點說就是把可重用的功能提取出來,然後將這些通用功能在合適的時候織入到應用程序中。比如安全,日誌記錄,這些都是通用的功能,我們可以把它們提取出來,然後在程序執行的合適地方植入這些代碼並執行它們,從而完成需要的功能並複用了這些功能。
c.簡單的數據庫事務管理:在使用數據庫的應用程序當中,自己管理數據庫事務是一項很讓人頭疼的事,而且很容易出現錯誤,Spring 支持可插入的事務管理支持,而且無需 JavaEE 環境支持,通過 Spring 管理事務可以把我們從事務管理中解放出來來專注業務邏輯。
d.JDBC 抽象及 ORM(對象關係映射)框架支持:Spring 使 JDBC 更加容易使用。提供 DAO(數據訪問對象)支持,非常方便集成第三方 ORM 框架,比如 Hibernate 等。並且完全支持 Spring 事務和使用 Spring 提供的一致的異常體系。
e.靈活的 Web 層支持:Spring 本身提供一套非常強大的 MVC 框架,而且可以非常容易的與第三方 MVC 框架集成,比如 Struts 等。
f.簡化各種技術集成:提供對 Java Mail、任務調度、JMX、JMS、JNDI、EJB、動態語言、遠程訪問、Web Service 等的集成。

五、總結

Spring 能幫助我們簡化應用程序開發,幫助我們創建和組裝對象,爲我們管理事務,簡單的 MVC 框架,可以把 Spring 看作是一個超級粘合平臺,能把很多技術整合在一起,形成一個整體,使系統結構更優良、性能更出衆,從而加速我們程序開發。有如上優點,我們沒有理由不考慮使用它

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章