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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Spring 概述

發(fā)布時(shí)間:2025/3/21 javascript 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Spring 概述

一、實(shí)驗(yàn)介紹

1.1 實(shí)驗(yàn)內(nèi)容

本節(jié)課程將介紹什么是 Spring ,Spring 是一個(gè)容器,通過(guò)反轉(zhuǎn)控制( IoC )和依賴注入( DI )來(lái)實(shí)現(xiàn)高內(nèi)聚、低耦合的應(yīng)用。除此之外它可以整合很多第三方框架,它還提供面向切面編程( AOP )的能力,對(duì)數(shù)據(jù)庫(kù)事務(wù)的管理尤其方便。

1.2 實(shí)驗(yàn)知識(shí)點(diǎn)

  • Spring 簡(jiǎn)介
  • Spring 的優(yōu)點(diǎn)
  • Spring 架構(gòu)

二、實(shí)驗(yàn)步驟

2.1 Spring 是什么

Spring 是一個(gè)開源的輕量級(jí) Java SE( Java 標(biāo)準(zhǔn)版本)/Java EE( Java 企業(yè)版本)開發(fā)應(yīng)用框架,其目的是用于簡(jiǎn)化企業(yè)級(jí)應(yīng)用程序開發(fā)。在傳統(tǒng)應(yīng)用程序開發(fā)中,一個(gè)完整的應(yīng)用是由一組相互協(xié)作的對(duì)象組成的。所以開發(fā)一個(gè)應(yīng)用除了要開發(fā)業(yè)務(wù)邏輯之外,最多的是關(guān)注使這些對(duì)象協(xié)作來(lái)完成所需功能的同時(shí),實(shí)現(xiàn)低耦合、高內(nèi)聚。所以,業(yè)務(wù)邏輯開發(fā)是不可避免的。如果有個(gè)框架可以幫我們來(lái)創(chuàng)建對(duì)象及管理這些對(duì)象之間的依賴關(guān)系,能通過(guò)配置方式來(lái)創(chuàng)建對(duì)象,管理對(duì)象之間依賴關(guān)系,我們不需要通過(guò)工廠和生成器來(lái)創(chuàng)建及管理對(duì)象之間的依賴關(guān)系,這樣我們必然會(huì)減少許多工作量,加快開發(fā)。Spring 框架問(wèn)世之初主要就是來(lái)完成這個(gè)功能。

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

2.2 Spring 能幫我們做什么

2.2.1. Spring 能幫我們根據(jù)配置文件創(chuàng)建及組裝對(duì)象之間的依賴關(guān)系

傳統(tǒng)程序開發(fā),創(chuàng)建對(duì)象及組裝對(duì)象間依賴關(guān)系由我們?cè)诔绦騼?nèi)部進(jìn)行控制,這樣會(huì)加大各個(gè)對(duì)象間的耦合,如果我們要修改對(duì)象間的依賴關(guān)系就必須修改源代碼,重新編譯、部署;而如果采用 Spring,則由 Spring 根據(jù)配置文件來(lái)進(jìn)行創(chuàng)建及組裝對(duì)象間依賴關(guān)系,只需要改配置文件即可,無(wú)需重新編譯。

2.2.2 Spring 面向切面編程能幫助我們無(wú)耦合的實(shí)現(xiàn)日志記錄、性能統(tǒng)計(jì)、安全控制

當(dāng)我們要進(jìn)行一些日志記錄、權(quán)限控制、性能統(tǒng)計(jì)等工作時(shí),在傳統(tǒng)應(yīng)用程序當(dāng)中我們可能在需要的對(duì)象或方法中進(jìn)行,而且比如權(quán)限控制、性能統(tǒng)計(jì)大部分是重復(fù)的,這樣代碼中就存在大量重復(fù)代碼,即使把通用部分提取出來(lái),仍舊存在重復(fù)調(diào)用,像性能統(tǒng)計(jì)我們可能只是在必要時(shí)才進(jìn)行,在診斷完畢后要?jiǎng)h除這些代碼;還有日志記錄,比如記錄一些方法訪問(wèn)日志、數(shù)據(jù)訪問(wèn)日志等等,這些都會(huì)滲透到各個(gè)訪問(wèn)方法中;還有權(quán)限控制,必須在方法執(zhí)行時(shí)開始進(jìn)行審核,可見這些工作急需優(yōu)化。如果采用 Spring ,這些日志記錄、權(quán)限控制、性能統(tǒng)計(jì)從業(yè)務(wù)邏輯中分離出來(lái),通過(guò) Spring 支持的面向切面編程,動(dòng)態(tài)添加這些功能,無(wú)需滲透到各個(gè)需要的方法或?qū)ο笾小7从^其他的解決方案,通過(guò)使用“代理設(shè)計(jì)模式”或“包裝器設(shè)計(jì)模式”,仍需通過(guò)編程方式來(lái)創(chuàng)建代理對(duì)象,仍需耦合這些代理對(duì)象,而采用 Spring 面向切面編程能提供一種更好的方式來(lái)完成上述功能。通過(guò)配置方式,而不需要在現(xiàn)有代碼中添加任何額外代碼,使現(xiàn)有代碼專注業(yè)務(wù)邏輯。

2.2.3 Spring能非常簡(jiǎn)單的幫我們管理數(shù)據(jù)庫(kù)事務(wù)

在傳統(tǒng)應(yīng)用程序當(dāng)中,我們?nèi)绾蝸?lái)完成數(shù)據(jù)庫(kù)事務(wù)管理?需要一系列“獲取連接,執(zhí)行 SQL,提交或回滾事務(wù),關(guān)閉連接”,而且還要保證在最后一定要關(guān)閉連接,多么可怕的事情,而且也很無(wú)聊;如果采用 Spring,我們只需獲取連接,執(zhí)行 SQL,其他的都交給 Spring 來(lái)管理,簡(jiǎn)單方便。

除以上之外,Spring 還可以:

  • 與第三方數(shù)據(jù)庫(kù)訪問(wèn)框架(如 Hibernate、JPA )無(wú)縫集成,而且自己也提供了一套 JDBC 訪問(wèn)模板,來(lái)方便數(shù)據(jù)庫(kù)訪問(wèn)。

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

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

2.3 Spring 的優(yōu)點(diǎn)

2.3.1 關(guān)鍵概念

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

2.3.2 Spring 的優(yōu)點(diǎn)

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

Spring 能幫助我們簡(jiǎn)化應(yīng)用程序開發(fā),幫助我們創(chuàng)建和組裝對(duì)象,為我們管理事務(wù),簡(jiǎn)單的 MVC 框架,可以把 Spring 看作是一個(gè)超級(jí)粘合平臺(tái),能把很多技術(shù)整合在一起,形成一個(gè)整體,使系統(tǒng)結(jié)構(gòu)更優(yōu)良、性能更出眾,從而加速我們程序開發(fā),有如上優(yōu)點(diǎn),我們沒(méi)有理由不考慮使用它。

2.4 如何學(xué)好 Spring

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

2.5 Spring 架構(gòu)圖

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

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

2.5.2 AOP 、 Aspects 模塊:

  • AOP 模塊: Spring AOP 模塊提供了符合 AOP Alliance 規(guī)范的面向切面的編程( aspect-oriented programming )實(shí)現(xiàn),提供比如日志記錄、權(quán)限控制、性能統(tǒng)計(jì)等通用功能和業(yè)務(wù)邏輯分離的技術(shù),并且能動(dòng)態(tài)的把這些功能添加到需要的代碼中;這樣各專其職,降低業(yè)務(wù)邏輯和通用功能的耦合。
  • Aspects 模塊:提供了對(duì) AspectJ 的集成,AspectJ 提供了比 Spring ASP 更強(qiáng)大的功能。
  • 數(shù)據(jù)訪問(wèn)/集成模塊:該模塊包括了 JDBC 、 ORM 、 OXM 、 JMS 和事務(wù)管理。
  • 事務(wù)模塊:該模塊用于 Spring 管理事務(wù),只要是 Spring 管理對(duì)象都能得到 Spring 管理事務(wù)的好處,無(wú)需在代碼中進(jìn)行事務(wù)控制了,而且支持編程和聲明性的事務(wù)管理。
  • JDBC 模塊:提供了一個(gè) JBDC 的樣例模板,使用這些模板能消除傳統(tǒng)冗長(zhǎng)的 JDBC 編碼還有必須的事務(wù)控制,而且能享受到 Spring 管理事務(wù)的好處。
  • ORM 模塊:提供與流行的“對(duì)象-關(guān)系”映射框架的無(wú)縫集成,包括 Hibernate 、JPA 、 MyBatis 等。而且可以使用 Spring 事務(wù)管理,無(wú)需額外控制事務(wù)。
  • OXM 模塊:提供了一個(gè)對(duì) Object / XML 映射實(shí)現(xiàn),將 java 對(duì)象映射成 XML 數(shù)據(jù),或者將 XML 數(shù)據(jù)映射成 java 對(duì)象, Object / XML 映射實(shí)現(xiàn)包括 JAXB 、 Castor 、 XMLBeans 和 XStream 。
  • JMS 模塊:用于 JMS ( Java Messaging Service ),提供一套 “消息生產(chǎn)者、消息消費(fèi)者”模板用于更加簡(jiǎn)單的使用 JMS , JMS 用于用于在兩個(gè)應(yīng)用程序之間,或分布式系統(tǒng)中發(fā)送消息,進(jìn)行異步通信。
  • Web / Remoting 模塊: Web / Remoting 模塊包含了 Web 、 Web-Servlet 、 Web-Struts 、 Web-Porlet 模塊。
  • Web 模塊:提供了基礎(chǔ)的 web 功能。例如多文件上傳、集成 IoC 容器、遠(yuǎn)程過(guò)程訪問(wèn)( RMI 、Hessian 、 Burlap )以及 Web Service 支持,并提供一個(gè) RestTemplate 類來(lái)提供方便的 Restful services 訪問(wèn)。
  • Web-Servlet 模塊:提供了一個(gè) Spring MVC Web 框架實(shí)現(xiàn)。Spring MVC 框架提供了基于注解的請(qǐng)求資源注入、更簡(jiǎn)單的數(shù)據(jù)綁定、數(shù)據(jù)驗(yàn)證等及一套非常易用的 JSP 標(biāo)簽,完全無(wú)縫與 Spring 其他技術(shù)協(xié)作。
  • Web-Struts 模塊:提供了與 Struts 無(wú)縫集成, Struts1.x 和 Struts2.x 都支持。
  • Test 模塊: Spring 支持 Junit 和 TestNG 測(cè)試框架,而且還額外提供了一些基于 Spring 的測(cè)試功能,比如在測(cè)試 Web 框架時(shí),模擬 Http 請(qǐng)求的功能。

2.6 典型應(yīng)用場(chǎng)景

Spring 可以應(yīng)用到許多場(chǎng)景,從最簡(jiǎn)單的標(biāo)準(zhǔn) Java SE 程序到企業(yè)級(jí)應(yīng)用程序都能使用 Spring 來(lái)構(gòu)建。以下介紹幾個(gè)比較流行的應(yīng)用場(chǎng)景:

  • 典型 Web 應(yīng)用程序應(yīng)用場(chǎng)景:

  • 遠(yuǎn)程訪問(wèn)應(yīng)用場(chǎng)景:

  • EJB 應(yīng)用場(chǎng)景:

五、實(shí)驗(yàn)總結(jié)

本節(jié)課程介紹了 Spring 的基本概念、框架模型以及應(yīng)用場(chǎng)景。下一節(jié)我們將進(jìn)入 Spring 松耦合項(xiàng)目的實(shí)現(xiàn)。

四、課后習(xí)題

請(qǐng)同學(xué)們更深入地了解 Spring 框架體系。

五、參考鏈接

本節(jié)實(shí)驗(yàn)內(nèi)容來(lái)自博客《跟我學(xué)spring3》,由作者開濤?提供的優(yōu)質(zhì)課程。


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

總結(jié)

以上是生活随笔為你收集整理的Spring 概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。