在日常 Java Web 開發中,Spring 框架幾乎是繞不開的技術體系。傳統的 Spring 項目因其靈活強大而被廣泛應用,但隨著項目規模擴大與業務復雜度提升,XML 配置繁瑣、部署復雜等問題逐漸顯現。為此,Spring Boot 應運而生。
Spring Boot 作為對 Spring 框架的進一步封裝,不僅大幅簡化了配置與依賴管理,還通過自動化機制提升了開發效率,成為現代企業應用和微服務架構的首選。
本文將圍繞 Spring Boot 的基本概念、優勢特性、項目創建流程,結合具體示例,對比傳統 Spring 與 Spring Boot 項目的實現方式,幫助讀者清晰掌握兩者的核心區別與使用場景。
文章目錄
- 1、Spring Boot 介紹
- 1.1、什么是 Spring Boot
- 1.2、Spring Boot 的核心優勢
- 1.3、使用 Spring Initializr 創建項目
- 2、傳統 Spring 項目實現
- 2.1、配置文件
- 2.2、Controller 類
- 3、Spring Boot 項目實現
- 3.1、項目結構生成方式
- 3.2、主類入口
- 3.3、Controller 類
- 3.4、配置文件
- 4、Spring VS SpringBoot
- 4.1、對比總覽
- 4.2、Maven 依賴對比(核心部分)
- 4.3、實例對比:登錄接口
- 4.4、啟動方式對比
- X、后記
1、Spring Boot 介紹
1.1、什么是 Spring Boot
Spring Boot 是由 Pivotal 團隊 提供的一個全新框架,旨在簡化 Spring 應用的初始化搭建與開發過程。
它基于 Spring 框架,采用約定優于配置的理念,通過自動配置和內嵌服務器,讓開發者可以快速啟動項目并專注于業務邏輯的實現。
Spring Boot 集成了大量常用第三方庫的配置,極大地減少了重復的樣板代碼和復雜配置。
1.2、Spring Boot 的核心優勢
快速搭建項目:
- 通過 Spring Initializr 工具,開發者可以快速生成項目骨架。
- 預集成常用依賴(如 Web、數據庫、緩存、安全等),大幅減少手動配置和環境準備時間。
自動配置(Auto Configuration):
- 根據添加的依賴和類路徑中的內容,Spring Boot 會智能推斷并完成配置。
- 開發者無需顯式定義 Bean 或 XML,大量默認配置可直接使用。
內嵌式服務器:
- 支持內嵌的 Tomcat、Jetty、Undertow,無需單獨部署 Web 服務器。
- 可以通過
main()
方法直接啟動應用,極大簡化開發和測試流程。
生產就緒(Production Ready):
- 提供如健康檢查(Health Check)、應用指標(Metrics)、日志追蹤等功能。
- 與 Spring Boot Actuator 集成后,便于監控和運維支持。
1.3、使用 Spring Initializr 創建項目
以下是通過 Spring Initializr 創建一個簡單 Spring Boot 項目的步驟:
打開 Spring Initializr
訪問地址:https://start.spring.io
填寫項目信息:
- 選擇構建工具:Maven 或 Gradle
- 選擇開發語言:Java、Kotlin 或 Groovy
- 選擇 Spring Boot 版本(建議使用穩定版)
添加項目依賴
例如:
Spring Web
:用于構建 RESTful API 或 Web 應用Spring Boot DevTools
:支持熱部署Lombok
:簡化 Java Bean 編寫Spring Data JPA
:操作數據庫
生成項目
- 點擊 “Generate” 按鈕,下載項目壓縮包
- 解壓后導入到 IDE(如 IntelliJ IDEA、Eclipse)中,即可開始開發
2、傳統 Spring 項目實現
2.1、配置文件
配置文件(applicationContext.xml
):
<context:component-scan base-package="com.example"/>
<context:annotation-config/>
配置文件(web.xml
):
<web-app><context-param name="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/dispatcher-servlet.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>spring</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
2.2、Controller 類
@Controller
public class LoginController {@RequestMapping(value = "/login", method = RequestMethod.POST)@ResponseBodypublic String login(@RequestParam String username, @RequestParam String password) {if ("admin".equals(username) && "123".equals(password)) {return "Login success";}return "Login failed";}
}
3、Spring Boot 項目實現
3.1、項目結構生成方式
使用 Spring Initializr 快速生成項目,勾選 Web 模塊。
3.2、主類入口
主類入口(Application.java
):
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
3.3、Controller 類
@RestController
public class LoginController {@PostMapping("/login")public String login(@RequestParam String username, @RequestParam String password) {if ("admin".equals(username) && "123".equals(password)) {return "Login success";}return "Login failed";}
}
3.4、配置文件
配置文件(application.properties
):
server.port=8080
4、Spring VS SpringBoot
從上面的用例可以看到,傳統 Spring 項目與 Spring Boot 項目在配置方式、啟動方式、開發效率等方面存在顯著差異。
傳統 Spring 項目依賴 XML 配置(如 web.xml
和 applicationContext.xml
),啟動需部署至外部 Web 容器,如 Tomcat,項目結構較為復雜,依賴管理手動繁瑣。
而 Spring Boot 項目強調 “約定優于配置”,通過注解和自動配置簡化開發流程,內嵌容器支持一鍵啟動,依賴通過 starter 管理統一引入,極大提升開發效率和維護性。
兩者在功能上可以實現相同目標,但 Spring Boot 更適合現代微服務和敏捷開發場景。
4.1、對比總覽
4.2、Maven 依賴對比(核心部分)
Spring(還需引入 javax.servlet-api
,Jackson、日志等依賴(手動)):
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.32</version>
</dependency>
Spring Boot(自動帶上:Tomcat、Jackson、日志、異常處理、JSON 序列化等):
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version>
</parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
4.3、實例對比:登錄接口
傳統 Spring Controller(需要搭配:web.xml
配置 DispatcherServlet
,applicationContext.xml
配置組件掃描):
@Controller
public class LoginController {@RequestMapping(value = "/login", method = RequestMethod.POST)@ResponseBodypublic String login(@RequestParam String username, @RequestParam String password) {return "admin".equals(username) && "123".equals(password) ? "Login success" : "Login failed";}
}
Spring Boot Controller(無需額外配置,直接運行,路徑自動映射,開發體驗極佳):
@RestController
public class LoginController {@PostMapping("/login")public String login(@RequestParam String username, @RequestParam String password) {return "admin".equals(username) && "123".equals(password) ? "Login success" : "Login failed";}
}
4.4、啟動方式對比
Spring:沒有 main()
方法。啟動依賴 Tomcat,必須通過 war 包部署
啟動流程:
Tomcat -> 讀取 web.xml -> 初始化 DispatcherServlet -> 讀取 applicationContext.xml -> 啟動
Spring Boot:直接運行 main 方法
@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}
X、后記
通過本篇文檔的學習,相信你已經對 Spring Boot 的框架特性與傳統 Spring 項目的差異有了系統認識。Spring Boot 不是對 Spring 的替代,而是在其之上提供了更高層次的封裝與工程化支持,使得項目開發更快速、配置更簡潔、部署更方便。
在微服務化、云原生架構日益流行的今天,掌握 Spring Boot 已成為 Java 開發者的重要技能之一。希望本文所提供的對比與實戰內容,能為你在項目選型和技術演進中提供有力參考。
如果你想進一步深入,可以繼續探索 Spring Boot 與 Spring Cloud 的整合、Spring Boot 的 Actuator、自動化測試、安全模塊等內容,挖掘更多實用功能與最佳實踐。