Spring 作為一個(gè)被廣泛使用的 Java 框架,讓我們可以很容易的創(chuàng)建基于 Java 的企業(yè)級(jí)應(yīng)用。它提供了開發(fā)企業(yè)級(jí)應(yīng)用所需要的所有東西,同時(shí)也支持基于 JVM (Java Virtual Machine, Java 虛擬機(jī)) 的語言,如 Groovy 和 安卓開發(fā)官方語言 Kotlin。Spring 同樣是一個(gè)非常靈活的框架,可以根據(jù)我們自身應(yīng)用的需求,來創(chuàng)建不同類型的軟件架構(gòu)。
本教程后續(xù)課程將基于 Spring Framework 5.0 以上的版本進(jìn)行,該版本需要安裝 JDK 8+ 的版本。
在本教程開始之前,我們將對(duì) Spring 框架進(jìn)行一些簡(jiǎn)單的介紹,讓零基礎(chǔ)的 Java 開發(fā)者能夠有一些大概的印象。
Spring 的意思
當(dāng)我剛開始接觸 Spring 的時(shí)候,打開官網(wǎng)就一臉懵逼,我們先來感受一下。

這么多東西,我們?cè)撓葟哪囊粋€(gè)學(xué)習(xí)。
我們平時(shí)說的 Spring 其實(shí)在不同上下文里面有不同的意思。它有時(shí)候指的是 Spring Framework 這個(gè)項(xiàng)目本身,這個(gè)項(xiàng)目作為 Spring 全家桶最核心的一個(gè)框架,上圖所有其他的 Spring 項(xiàng)目都是基于 Spring Framework 而構(gòu)建的;然后有時(shí)間我們所說的 Spring 指代的是整個(gè) Spring 全家桶,包括 Spring Framework, Spring Boot, Spring Clouod 等。
在本教程中,我們將要學(xué)習(xí)的也是作為 Spring 全家桶基礎(chǔ)框架的 Spring Framework,但是在開發(fā)環(huán)境的搭建中,我們會(huì)使用 Spring Boot 來簡(jiǎn)化我們的教程環(huán)境搭建。
Spring Framework 以模塊化的形式進(jìn)行發(fā)布,我們開發(fā)的應(yīng)用可以根據(jù)我們的需求來選擇我們所需要的模塊,這是一種非常棒的設(shè)計(jì)思想,模塊化的設(shè)計(jì)可以讓程序間的不同功能或依賴解耦,讓我們的程序更加靈活也更容易擴(kuò)展(增加新的功能)。
在 Spring Framework 的核心模塊中,最重要的是 核心容器,該容器包括了配置模型和依賴注入(控制反轉(zhuǎn))的機(jī)制。除了這些基礎(chǔ)設(shè)施,框架還提供了其他的基礎(chǔ)功能來支持不同架構(gòu)的應(yīng)用,如:
- 消息發(fā)送 Messaging
- 事務(wù)性數(shù)據(jù) Transactional data
- 持久化 Persistence
- Web
- 基于 Servlet 的 Spring MVC 框架和 Spring WebFlux Reactive 框架
Spring Framework 的歷史
Spring 框架最早在 2003 年 Java 企業(yè)應(yīng)用開發(fā)框架 J2EE 的一個(gè)補(bǔ)充,Spring 可以作為 J2EE 的一個(gè)子集,精選了 J2EE 中的部分 Specification,包括了:
- Servlet API
- WebSocket API
- Concurrency Utilities
- JSON Binding API
- Bean Validation
- JPA
- JMS
- JTA/JCA
Spring Framework 同時(shí)還支持 依賴注入 JSR330 和 通用注解 JRS250 規(guī)范。
設(shè)計(jì)哲學(xué)
Spring Framework 帶給我最大的好處并不是框架本身提供的這些功能,而是它的設(shè)計(jì)思想,和方式。在 Spring 中,有以下幾個(gè)原則:
- 為每一層都提供選擇的機(jī)會(huì)。比如,你可以更換持久層的底層框架(如切換數(shù)據(jù)庫(kù))而不用修改你的代碼。
- 容納不同的觀點(diǎn)。提供更多的靈活性,而不是關(guān)注在事情應(yīng)該怎么被完成本身,對(duì)于同一個(gè)事情,從不同維度提供多種可以解決的方案。
- 保持強(qiáng)大的向后兼容性。
- 關(guān)注API的設(shè)計(jì)。
- 高質(zhì)量的代碼。Spring 的代碼堪稱藝術(shù)品,Clean Code 且有完善的 Javadoc,在各包之間沒有循環(huán)依賴。
以上便是對(duì) Spring 的一些簡(jiǎn)單的介紹。