日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring 概述

發布時間:2025/3/21 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring 概述

一、實驗介紹

1.1 實驗內容

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

1.2 實驗知識點

  • Spring 簡介
  • Spring 的優點
  • Spring 架構

二、實驗步驟

2.1 Spring 是什么

Spring 是一個開源的輕量級 Java SE( Java 標準版本)/Java EE( Java 企業版本)開發應用框架,其目的是用于簡化企業級應用程序開發。在傳統應用程序開發中,一個完整的應用是由一組相互協作的對象組成的。所以開發一個應用除了要開發業務邏輯之外,最多的是關注使這些對象協作來完成所需功能的同時,實現低耦合、高內聚。所以,業務邏輯開發是不可避免的。如果有個框架可以幫我們來創建對象及管理這些對象之間的依賴關系,能通過配置方式來創建對象,管理對象之間依賴關系,我們不需要通過工廠和生成器來創建及管理對象之間的依賴關系,這樣我們必然會減少許多工作量,加快開發。Spring 框架問世之初主要就是來完成這個功能。

Spring 框架除了幫我們管理對象及其依賴關系,還提供像通用日志記錄、性能統計、安全控制、異常處理等面向切面的能力,可以幫我們管理最頭疼的數據庫事務,同時,它本身提供了一套簡單的 JDBC 訪問實現,能與第三方數據庫訪問框架集成(如 Hibernate、JPA ),與各種 Java EE 技術整合(如 Java Mail、任務調度等等),提供一套自己的 web 層框架 Spring MVC 、而且還能非常簡單的與第三方 web 框架集成。從這里我們可以認為 Spring 是一個超級粘合平臺,除了自己提供功能外,還提供粘合其他技術和框架的能力,從而使我們可以更自由的選擇到底使用什么技術進行開發。而且不管是 JAVA SE( C/S 架構)應用程序還是 JAVA EE( B/S 架構)應用程序都可以使用這個平臺進行開發。讓我們來深入看一下 Spring 到底能幫我們做些什么?

2.2 Spring 能幫我們做什么

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

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

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

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

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

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

除以上之外,Spring 還可以:

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

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

  • 與 Java EE(如 Java Mail 、任務調度)整合,與更多技術整合(比如緩存框架)。

2.3 Spring 的優點

2.3.1 關鍵概念

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

2.3.2 Spring 的優點

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

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

2.4 如何學好 Spring

要學好 Spring,首先要明確 Spring 是個什么東西,能幫我們做些什么事情,知道了這些然后做個簡單的例子,這樣就基本知道怎么使用 Spring了。Spring 核心是 IoC 容器,所以一定要透徹理解什么是控制反轉( IoC )容器,以及如何配置及使用容器,其他所有技術都是基于容器實現的;理解好 IoC 后,接下來是面向切面編程( AOP ),首先還是明確概念,基本配置,最后是實現原理,接下來就是數據庫事務管理,其實 Spring 管理事務是通過面向切面編程實現的,所以基礎很重要, IoC 容器和 AOP 學好,其余都是基于這兩個核心東西的實現,學起來就更加輕松了。

2.5 Spring 架構圖

2.5.1 核心容器:包括 Core 、 Beans 、 Context 、 EL 模塊

  • Core 模塊:封裝了框架依賴的最底層部分,包括資源訪問、類型轉換及一些常用工具類。
  • Beans 模塊:提供了框架的基礎部分,包括控制反轉( IOC )和依賴注入( DI )。其中 BeanFactory 是容器核心,本質是“工廠設計模式”的實現,而且無需編程實現“單例設計模式”,單例完全由容器控制,而且提倡面向接口編程,而非面向實現編程;所有應用程序對象及對象間關系由框架管理,從而真正從程序邏輯中把維護對象之間的依賴關系提取出來,所有這些依賴關系都由 BeanFactory 來維護。
  • Context 模塊:以 Core 和 Beans 為基礎,集成 Beans 模塊功能并添加資源綁定、數據驗證、國際化、 Java EE 支持、容器生命周期、事件傳播等;核心接口是 ApplicationContext 。
  • EL 模塊:提供強大的表達式語言支持,支持訪問和修改屬性值,方法調用,支持訪問及修改數組、容器和索引器,命名變量,支持算數和邏輯運算,支持從 Spring 容器獲取 Bean, 它也支持列表投影、選擇和一般的列表聚合等。

2.5.2 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-Struts 、 Web-Porlet 模塊。
  • Web 模塊:提供了基礎的 web 功能。例如多文件上傳、集成 IoC 容器、遠程過程訪問( RMI 、Hessian 、 Burlap )以及 Web Service 支持,并提供一個 RestTemplate 類來提供方便的 Restful services 訪問。
  • Web-Servlet 模塊:提供了一個 Spring MVC Web 框架實現。Spring MVC 框架提供了基于注解的請求資源注入、更簡單的數據綁定、數據驗證等及一套非常易用的 JSP 標簽,完全無縫與 Spring 其他技術協作。
  • Web-Struts 模塊:提供了與 Struts 無縫集成, Struts1.x 和 Struts2.x 都支持。
  • Test 模塊: Spring 支持 Junit 和 TestNG 測試框架,而且還額外提供了一些基于 Spring 的測試功能,比如在測試 Web 框架時,模擬 Http 請求的功能。

2.6 典型應用場景

Spring 可以應用到許多場景,從最簡單的標準 Java SE 程序到企業級應用程序都能使用 Spring 來構建。以下介紹幾個比較流行的應用場景:

  • 典型 Web 應用程序應用場景:

  • 遠程訪問應用場景:

  • EJB 應用場景:

五、實驗總結

本節課程介紹了 Spring 的基本概念、框架模型以及應用場景。下一節我們將進入 Spring 松耦合項目的實現。

四、課后習題

請同學們更深入地了解 Spring 框架體系。

五、參考鏈接

本節實驗內容來自博客《跟我學spring3》,由作者開濤?提供的優質課程。


from:?https://www.shiyanlou.com/courses/578/labs/1921/document

總結

以上是生活随笔為你收集整理的Spring 概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。