搜尋
首頁Javajava教程Spring框架是什麼

Spring框架是什麼

May 06, 2019 am 10:45 AM
java

Spring是一個開源框架,它是由Rod Johnson創建的,同時是為了解決企業應用開發的複雜性而創建的,Spring可以使用基本的JavaBean來完成以前只可能由EJB完成的事情。

Spring框架是什麼

本篇文章將大概介紹Spring框架的功能和模組,具體使用請看推薦課程:Java教學

Spring是一個開源框架,它由Rod Johnson創建。它是為了解決企業應用開發的複雜性而創建的。 Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和鬆散耦合的角度而言,任何Java應用都 可以從Spring中受益。

Spring是一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器框架。

輕量-從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR檔案裡發布。並且Spring所 需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的物件不依賴Spring的特定類別。

控制反轉-Spring透過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個物件依賴的其它物件會透過被動的方式傳 遞進來,而不是這個物件自己創建或尋找依賴物件。你可以認為IoC與JNDI相反-不是物件從容器中尋找依賴,而是容器在物件初始化時不等物件請求就主動將依賴傳遞給它。

面向切面-Spring提供了面向切面程式設計的豐富支持,允許透過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事(transaction)管理)進行內聚性的開發。應用物件只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支援。

容器——Spring包含並管理應用程式物件的配置和生命週期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基於一個可配置原型( prototype),你的bean可以創建一個單獨的實例或每次需要時都產生一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。

框架-Spring可以將簡單的元件配置、組合成為複雜的應用。在Spring中,應用程式物件被聲明式地組合,典型地是在一個XML檔案裡。

Spring也提供了很多基礎功能(事務管理、持久化框架整合等等),將應用邏輯的開發留給了你。

所有Spring的這些特徵使你能夠編寫更乾淨、更可管理、並且更易於測試的程式碼。它們也為Spring中的各種模組提供了基礎支援。


Spring框架由七個定義明確的模組組成

Spring框架是什麼

#如果作為一個整體,這些模組為你提供了開發企業應用程式所需的一切。但你不必將應用程式完全基於Spring框架。你可以自由地挑選適合你的應 用的模組而忽略其餘的模組。

就像你所看到的,所有的Spring模組都是在核心容器之上建構的。容器定義了Bean是如何創建、配置和管理的——更多的Spring細節。

當你配置你的應用程式時,你會潛在地使用這些類別。但是作為一名開發者,你最可能對影響容器所提供的服務的其它模組感興趣。這些模組將 會為你提供用於建立應用服務的框架,例如AOP和持久性。

核心容器

這是Spring框架最基礎的部分,它提供了依賴注入(DependencyInjection)特徵來實現容器對Bean的管理。這裡最基本的概念是BeanFactory,它是任何Spring應用的核心。 BeanFactory是工廠模式的實現,它使用IoC將應用程式配置和依賴說明從實際的應用程式碼中分離出來。

應用上下文(Context)模組

核心模組的BeanFactory使Spring成為一個容器,而上下文模組使它成為一個框架。這個模組擴展了BeanFactory的概念,增加了對國際 化(I18N)訊息、事件傳播以及驗證的支持。

另外,這個模組提供了許多企業服務,例如電子郵件、JNDI存取、EJB整合、遠端以及時序調度(scheduling)服務。也包括了對模版框 架例如Velocity和FreeMarker整合的支援。

Spring的AOP模組

Spring在它的AOP模組中提供了對面向切面程式設計的豐富支援。這個模組是在Spring應用中實現切面編程的基礎。為了確保Spring與其它 AOP框架的互用性,Spring的AOP支援基於AOP聯盟定義的API。 AOP聯盟是一個開源項目,它的目標是透過定義一組共同的介面和元件來促進AOP的使用以及不同的AOP實現之間的互用性。透過造訪他們的站點,你可以找到關於AOP聯盟的更多內容。

Spring的AOP模組也將元資料編程引入了Spring。使用Spring的元資料支持,你可以為你的原始碼增加註釋,指示Spring在何處以及如 何應用切面函數。

JDBC抽象和DAO模組

使用JDBC經常導致大量的重複程式碼,取得連線、建立語句、處理結果集,然後關閉連線。 Spring的JDBC和DAO模組抽取了這些重複代 碼,因此你可以保持你的資料庫存取代碼乾淨簡潔,並且可以防止因關閉資料庫資源失敗而引起的問題。

這個模組也在幾種資料庫伺服器給予的錯誤訊息之上建立了一個有意義的異常層。使你不用再試圖破解神秘的私有的SQL錯誤訊息!

另外,這個模組也使用了Spring的AOP模組為Spring應用中的物件提供了事務管理服務。

物件/關聯映射整合模組

對那些更喜歡使用物件/關聯映射工具而不是直接使用JDBC的人,Spring提供了ORM模組。 Spring並不試圖實現它自己的ORM解決方 案,而是為幾種流行的ORM框架提供了整合方案,包括Hibernate、JDO和iBATIS SQL映射。 Spring的事務管理支援這些ORM框架中的每一個也包括JDBC。

Spring的Web模組

Web上下文模組建立於應用上下文模組之上,提供了一個適合於Web應用的上下文。另外,這個模組也提供了一些面向服務支援。範例

如:實作檔案上傳的multipart請求,它也提供了Spring和其它Web框架的集成,例如Struts、WebWork。

Spring的MVC框架

Spring為建構Web應用提供了一個功能全面的MVC框架。雖然Spring可以很容易地與其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC對控制邏輯和業務對象提供了完全的分離。

它也允許你聲明性地將請求參數綁定到你的業務對像中,此外,Spring的MVC框架還可以利用Spring的任何其它服務,例如國際化信息與驗證。

Spring框架Web頁面亂碼問題

在做java Web 專案時,亂碼問題時常都會出現,解決方法也不盡相同,有簡單也有複雜的;如果加入了Spring框架之後就不一樣了,可 以採用Spring框架自帶的過濾器CharacterEncodingFilter,這樣可以大大減輕了我們的工作量,即簡單方便又容易理解。

以上是Spring框架是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境