貴州住房和城鄉(xiāng)建設(shè)部網(wǎng)站官網(wǎng)阿里關(guān)鍵詞排名查詢
Spring 是 Java EE 編程領(lǐng)域的一款輕量級的開源框架,由被稱為“Spring 之父”的 Rod Johnson 于 2002 年提出并創(chuàng)立,它的目標(biāo)就是要簡化 Java 企業(yè)級應(yīng)用程序的開發(fā)難度和周期。
Spring 自誕生以來備受青睞,一直被廣大開發(fā)人員作為 Java 企業(yè)級應(yīng)用程序開發(fā)的首選。時至今日,Spring 儼然成為了 Java EE 代名詞,成為了構(gòu)建 Java EE 應(yīng)用的事實標(biāo)準(zhǔn)。
Spring 的誕生與發(fā)展
早期的 J2EE(Java EE 平臺)推崇以 EJB 為核心的開發(fā)方式,但這種開發(fā)方式在實際的開發(fā)過程中存在種種弊端,例如使用復(fù)雜、代碼臃腫、代碼侵入性強、開發(fā)周期長、移植難度大等。
Rod Johnson 在其 2004 年編著的暢銷書《Expert One-on-One J2EE Development without EJB》中,針對 EJB 各種臃腫的結(jié)構(gòu)進行了逐一的分析和否定,并分別以更加簡潔的方式進行了替換。
在這本書中,Rod Johnson 通過一個包含 3 萬行代碼的附件,展示了如何在不使用 EJB 的情況下構(gòu)建一個高質(zhì)量、可擴展的 Java 應(yīng)用程序。在這個附件中,Rod Johnson 編寫了上萬行基礎(chǔ)結(jié)構(gòu)代碼,其中包含了許多可重用的 Java 接口和類,例如 ApplicationContext、BeanFactory 等。這些類的根包被命名為 com.interface21,含義為:這是提供給 21 世紀(jì)的一個參考。
這本書影響甚遠(yuǎn),后來 Rod Johnson 將 com.interface21 的代碼開源,并把這個新框架并命名為“Spring”,含義為:Spring 像一縷春風(fēng)一樣,掃平傳統(tǒng) J2EE 的寒冬。
2003 年 2 月,Spring 0.9 版本發(fā)布,它采用了 Apache 2.0 開源協(xié)議;2004 年 4 月,Spring 1.0 版本正式發(fā)布。到目前為止,Spring 已經(jīng)步入到了第 5 個大版本,也就是我們常說的 Spring 5。
Spring 的狹義和廣義
在不同的語境中,Spring 所代表的含義是不同的。下面我們就分別從“廣義”和“狹義”兩個角度,對 Spring 進行介紹。
廣義的 Spring:Spring 技術(shù)棧
廣義上的 Spring 泛指以 Spring Framework 為核心的 Spring 技術(shù)棧。
經(jīng)過十多年的發(fā)展,Spring 已經(jīng)不再是一個單純的應(yīng)用框架,而是逐漸發(fā)展成為一個由多個不同子項目(模塊)組成的成熟技術(shù),例如 Spring Framework、Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 等,其中 Spring Framework 是其他子項目的基礎(chǔ)。
這些子項目涵蓋了從企業(yè)級應(yīng)用開發(fā)到云計算等各方面的內(nèi)容,能夠幫助開發(fā)人員解決軟件發(fā)展過程中不斷產(chǎn)生的各種實際問題,給開發(fā)人員帶來了更好的開發(fā)體驗。
項目名稱 | 描述 |
---|---|
Spring Data | Spring 提供的數(shù)據(jù)訪問模塊,對 JDBC 和 ORM 提供了很好的支持。通過它,開發(fā)人員可以使用一種相對統(tǒng)一的方式,來訪問位于不同類型數(shù)據(jù)庫中的數(shù)據(jù)。 |
Spring Batch | 一款專門針對企業(yè)級系統(tǒng)中的日常批處理任務(wù)的輕量級框架,能夠幫助開發(fā)人員方便的開發(fā)出健壯、高效的批處理應(yīng)用程序。 |
Spring Security | 前身為 Acegi,是 Spring 中較成熟的子模塊之一。它是一款可以定制化的身份驗證和訪問控制框架。 |
Spring Mobile | 是對 Spring MVC 的擴展,用來簡化移動端 Web 應(yīng)用的開發(fā)。 |
Spring Boot | 是 Spring 團隊提供的全新框架,它為 Spring 以及第三方庫一些開箱即用的配置,可以簡化 Spring 應(yīng)用的搭建及開發(fā)過程。 |
Spring Cloud | 一款基于 Spring Boot 實現(xiàn)的微服務(wù)框架。它并不是某一門技術(shù),而是一系列微服務(wù)解決方案或框架的有序集合。它將市面上成熟的、經(jīng)過驗證的微服務(wù)框架整合起來,并通過 Spring Boot 的思想進行再封裝,屏蔽調(diào)其中復(fù)雜的配置和實現(xiàn)原理,最終為開發(fā)人員提供了一套簡單易懂、易部署和易維護的分布式系統(tǒng)開發(fā)工具包。 |
狹義的 Spring:Spring Framework
狹義的 Spring 特指 Spring Framework,通常我們將它稱為 Spring 框架。
Spring 框架是一個分層的、面向切面的 Java 應(yīng)用程序的一站式輕量級解決方案,它是 Spring 技術(shù)棧的核心和基礎(chǔ),是為了解決企業(yè)級應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。
Spring 有兩個核心部分: IoC 和 AOP。
核心 | 描述 |
---|---|
IOC | Inverse of Control 的簡寫,譯為“控制反轉(zhuǎn)”,指把創(chuàng)建對象過程交給 Spring 進行管理。 |
AOP | Aspect Oriented Programming 的簡寫,譯為“面向切面編程”。 AOP 用來封裝多個類的公共行為,將那些與業(yè)務(wù)無關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯封裝起來,減少系統(tǒng)的重復(fù)代碼,降低模塊間的耦合度。另外,AOP 還解決一些系統(tǒng)層面上的問題,比如日志、事務(wù)、權(quán)限等。 |
Spring 是一種基于 Bean 的編程技術(shù),它深刻地改變著 Java 開發(fā)世界。Spring 使用簡單、基本的 Java Bean 來完成以前只有 EJB 才能完成的工作,使得很多復(fù)雜的代碼變得優(yōu)雅和簡潔,避免了 EJB 臃腫、低效的開發(fā)模式,極大的方便項目的后期維護、升級和擴展。
在實際開發(fā)中,服務(wù)器端應(yīng)用程序通常采用三層體系架構(gòu),分別為表現(xiàn)層(web)、業(yè)務(wù)邏輯層(service)、持久層(dao)。
Spring 致力于 Java EE 應(yīng)用各層的解決方案,對每一層都提供了技術(shù)支持。
- 在表現(xiàn)層提供了對 Spring MVC、Struts2 等框架的整合;
- 在業(yè)務(wù)邏輯層提供了管理事務(wù)和記錄日志的功能;
- 在持久層還可以整合 MyBatis、Hibernate 和 JdbcTemplate 等技術(shù),對數(shù)據(jù)庫進行訪問。
這充分地體現(xiàn)了 Spring 是一個全面的解決方案,對于那些已經(jīng)有較好解決方案的領(lǐng)域,Spring 絕不做重復(fù)的事情。
從設(shè)計上看,Spring 框架給予了 Java 程序員更高的自由度,對業(yè)界的常見問題也提供了良好的解決方案,因此在開源社區(qū)受到了廣泛的歡迎,并且被大部分公司作為 Java 項目開發(fā)的首選框架。
Spring Framework 的特點
Spring 框架具有以下幾個特點:
方便解耦,簡化開發(fā)
Spring 就是一個大工廠,可以將所有對象的創(chuàng)建和依賴關(guān)系的維護交給 Spring 管理。
方便集成各種優(yōu)秀框架
Spring 不排斥各種優(yōu)秀的開源框架,其內(nèi)部提供了對各種優(yōu)秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。
降低 Java EE API 的使用難度
Spring 對 Java EE 開發(fā)中非常難用的一些 API(JDBC、JavaMail、遠(yuǎn)程調(diào)用等)都提供了封裝,使這些 API 應(yīng)用的難度大大降低。
方便程序的測試
Spring 支持 JUnit4,可以通過注解方便地測試 Spring 程序。
AOP 編程的支持
Spring 提供面向切面編程,可以方便地實現(xiàn)對程序進行權(quán)限攔截和運行監(jiān)控等功能。
聲明式事務(wù)的支持
只需要通過配置就可以完成對事務(wù)的管理,而無須手動編程。
黑馬程序員新版Spring零基礎(chǔ)入門到精通,一套搞定spring全套視頻教程(含實戰(zhàn)源碼)