一本書揭開Spring Boot技術內幕

2021-01-08 Java編程技術樂園

及時獲取有趣有料的技術文章

經過幾年的發展,Spring Boot幾乎已成為Java企業級開發的標準框架,它為開發人員提供了極其方便的項目框架搭建、軟體集成功能,極大地提升了開發人員的工作效率,減少了企業的運營成本。而Spring Boot又極其簡單易用,一個新手按照官方文檔的指導在十幾分鐘內就能創建一個可運行的Spring Boot項目。

Spring Boot為開發人員提供了方便,但一些開發人員並不了解Spring Boot為什麼可以帶來方便的底層邏輯,也沒有嘗試借鑑Spring Boot的這種創新。這不僅會導致他們在使用Spring Boot的過程中不能深層次發揮它的優勢,還會導致在大範圍應用Spring Boot之後出現各種問題卻找不到解決辦法的情況,更別說借鑑Spring Boot的創新了。

今天為大家介紹一本新書《Spring boot技術內幕:架構設計與實現原理》

本書特色

本書有別於市面上其他Spring Boot入門和實戰類的相關書,更多側重於Spring Boot設計思想、原理及具體功能實現的原始碼分析,從一個更深的層次帶領讀者了解Spring Boot。書中內容涵蓋範圍較廣,卻又不顯冗餘,每一個知識點都通過典型的功能實現來進行分析。

本書內容基於Spring Boot 2.2.1,書中涵蓋的許多知識點都是作者多年經驗的總結,希望能給讀者帶來全新的知識盛宴。

內容簡介

這是一本從源碼角度分析Spring Boot底層原理和實現方式,以求幫助讀者掌握Spring Boot多場景聯合運用、項目性能調優的實踐指導書。本書以新版本的Spring Boot 2.x的源碼為基礎進行分析,不僅提煉出了Spring Boot源碼的核心思想,還從多個維度對Spring Boot框架中的數十個主流功能模塊進行了源碼級的分析,更為難能可貴的是,書中還對Spring Boot外置輔助工具進行了源碼級的分析。此外,為了指導讀者實踐應用,本書除了在各章相關部分給出實踐方法外,還以用獨立章節以實際案例的形式進行專門指導。

本書從邏輯上可分為4個部分:

第一部分:準備部分,包括第1章,這部分主要介紹進行SpringBoot解析需要做的準備工作,包括源碼的獲取與調試、源碼閱讀工具等,同時還給出了需要在思想層面做的準備——整體了解源碼目錄結構和SpringBoot設計思想。

第二部分:原理部分,包含第2~4章內容,著重講解SpringBoot實現的原理及基本流程,這是SpringBoot的核心之一,也是後面章節的基礎。

第三部分:內置組件部分,包含第5~12章,著重講解SpringBoot內置集成框架的實現原理、原始碼分析及實戰分析,其中包括對外化配置、web應用、內置servlet容器、資料庫、消息源、緩存、日誌進行的源碼級的分析和實踐運用指導。

第四部分:外置組件部分,包含第13~16章,著重講解實際項目實施過程中肯定會用到的單元測試、打包、部署、監控等相關外置輔助工具,這部分不僅介紹了相關工具的集成方法,還從源碼角度進行了詳細解析。

讀者對象

Spring Boot的使用者和愛好者。Spring系列框架的使用者和愛好者。對源碼感興趣,希望學習源碼解析相關方法的技術人員。開設Spring Boot相關課程的院校師生。

目錄

★第一部分 準備篇

●第1章 閱讀代碼前的準備 2

1.1 獲取和調試Spring Boot原始碼 2

1.2Spring Boot原始碼的目錄結構 3

1.3 原始碼閱讀工具 5

1.4Spring Boot的設計理念和目標 6

1.5Spring Boot的整體架構 7

★第二部分 原理篇

●第2章 Spring Boot核心運行原理 10

2.1 核心運行原理 10

2.2 運作原理源碼解析之@EnableAuto-Configuration 11

2.3AutoConf?igurationImportSelector源碼解析 15

2.4@Conditional條件註解 33

2.5 實例解析 39

2.6 小結 41

●第3章 Spring Boot構造流程源碼分析 42

3.1SpringApplication的初始化簡介 42

3.2SpringApplication實例化流程 43

3.3SpringApplication構造方法參數 44

3.4Web應用類型推斷 45

3.5ApplicationContextInitializer加載 47

3.6ApplicationListener加載 50

3.7 入口類推斷 51

3.8SpringApplication的定製化配置 52

3.9 小結 54

●第4章 Spring Boot運行流程源碼分析 55

4.1run方法核心流程 55

4.2SpringApplicationRunListener監聽器 57

4.3 初始化ApplicationArguments 63

4.4 初始化Conf?igurableEnvironment 63

4.5 忽略信息配置 68

4.6 列印Banner 68

4.7Spring應用上下文的創建 69

4.8Spring應用上下文的準備 70

4.9Spring應用上下文的刷新 75

4.10 調用ApplicationRunner和CommandLineRunner 77

4.11 小結 78

★第三部分 內置組件篇

●第5章 Spring Boot外化配置源碼解析 80

5.1 外化配置簡介 80

5.2ApplicationArguments 參數處理 81

5.3 命令參數的獲取 86

5.4 配置文件的加載 88

5.5 基於Prof?ile的處理實現 93

5.6 綜合實戰 97

5.7 小結 102

●第6章 Spring Boot Web應用源碼解析 103

6.1 遺失的web.xml 103

6.2Web應用的自動配置 104

6.3Spring MVC的自動配置 111

6.4 綜合實戰 117

6.5 小結 120

●第7章 Spring Boot 內置Servlet容器源碼解析 121

7.1Web容器自動配置 121

7.2WebServer初始化過程 128

7.3DispatcherServlet的加載過程 134

7.4 綜合實戰 140

7.5 小結 141

●第8章 Spring Boot 資料庫配置源碼解析 142

8.1 自動配置註解解析 142

8.2 自動配置內部實現解析 150

8.3JdbcTemplateAutoConfiguration 157

8.4 異常案例分析 159

8.5 小結 159

●第9章 Spring Boot 消息源碼解析 160

9.1JMS基礎自動配置 160

9.2ActiveMQ自動配置 166

9.3@JmsListener註解解析 173

9.4 小結 175

●第10章 Spring Boot Cache源碼解析 176

10.1Cache簡介 176

10.2Cache自動配置 177

10.3 默認Cache配置 183

10.4 小結 188

●第11章 Spring Boot 日誌源碼解析 189

11.1LoggingApplicationListener的觸發 189

11.2LoggingApplicationListener的執行 191

11.3 小結 203

●第12章 實戰:創建Spring Boot自動配置項目 204

12.1 自定義Spring Boot Starter項目 204

12.2Starter測試使用 207

12.3 小結 208

★第四部分 外置組件篇

●第13章 Spring Boot單元測試 210

13.1Spring Boot對單元測試的支持 210

13.2 常用單元測試註解 211

13.3JUnit5單元測試示例 212

13.4Web應用單元測試 214

13.5MockMvc的自動配置 217

13.6 小結 221

●第14章 Spring Boot打包部署解析 222

14.1Spring Boot的jar包 222

14.2Launcher實現原理 227

14.3 小結 234

●第15章 Spring Boot 應用監控解析 235

15.1Actuator簡介 235

15.2Actuator自動配置 237

15.3Actuator端點展示 244

15.4 小結 247

●第16章 Spring Boot Security支持 248

16.1Security自動配置 248

16.2SecurityAutoConfiguration詳解 249

16.3SecurityFilterAutoConfiguration詳解 255

16.4 小結 257

上下滑動查看

一個技術人珍藏的武學【秘籍】

相關焦點

  • Spring Boot 教程、技術棧示例代碼:spring-boot-examples
    主要示例代碼spring-boot-hello:Spring Boot 2.0 Hello World 示例pom文件依賴項目啟動類controllerspring-boot-banner:Spring Boot 定製 Banner 示例Banner文件放置目錄spring-boot-docker:使用 Docker
  • spring-boot-dependencies引入spring boot
    兩種方式快速創建一個spring boot的maven工程一、使用<parent>標籤繼承父模塊 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <
  • 「spring-boot 源碼解析」spring-boot 依賴管理
    spring-boot 工程常使用 spring-boot-dependencies、spring-boot-starter-parent 管理工程依賴。 spring-boot 的最上級工程是 spring-boot-build,以下開始一步一步深入了解 spring-boot 依賴解決方案。
  • Eclipse+Spring boot開發教程
    一、安裝其實spring boot官方已經提供了用於開發spring boot的定製版eclipse(STS,Spring Tool Suite)直接下載使用即可,但考慮到可能有些小夥伴不想又多裝個eclipse,我們這裡還是介紹使用原版eclipse再在其上安裝spring插件進行開發的方法。
  • Spring Boot 自定義Starter
    本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。在springboot中,使用的最多的就是starter。創建一個maven工程(maven-archetype-quickstart)注意artifactId的命名規則,Spring官方Starter通常命名為spring-boot-starter-{name}如 spring-boot-starter-web, Spring官方建議非官方Starter命名應遵循{name}-spring-boot-starter的格式, 如mybatis-spring-boot-starter
  • spring boot
    簡單的來說 Spring Boot 這個項目整合目前很多的流行的第三方框架,並且做了一系列的默認配置,我們無需在進行手動配置,直接拿過來直接使用!Boot 進行 web 開發我們就需要導入 spring-boot-starter-web 這個項目的依賴,導入這個依賴以後!
  • Spring Boot 11 使用Spring Boot Actuator監視應用程式
    在本課中,我將創建一個spring boot項目並將Spring Boot Actuator 嵌入其中。我們的目標是了解 Spring Boot Actuator提供的功能。在eclipse上,創建一個spring boot項目。
  • Spring Boot 16 Spring JDBC和事務
    >Package: me.laocat.jdbc選擇要使用的技術和庫>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!
  • 乾貨丨Kotlin在Spring Boot中的應用
    市面上介紹使用Kotlin進行後端開發的圖書和文章也比較少,袁康在大量實踐的基礎上,萌生了寫一本書的想法,希望和更多的Java開發人員分享Kotlin在後端開發中的實踐經驗。此外,很多開源項目提供了Spring Boot的集成,如rocketmq- spring-boot-starter,方便用戶使用。
  • Spring Boot 09 Spring Boot&Apache Tiles&JSP集成
    ><project xmlns=&34; xmlns:xsi=&34; xsi:schemaLocation=&34;> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId
  • 從零開始 - Spring Boot - 引導快速創建Spring Boot - 知識鋪
    </groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId>
  • Spring Boot 08 集成jsp
    Spring是一個著名的框架,因為它支持View層的許多技術。Spring 支持的View層 技術 包括 JSP,Thymeleaf,Freemarker等。><project xmlns=&34; xmlns:xsi=&34; xsi:schemaLocation=&34;> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId
  • Spring Boot 13 多個ViewResolvers
    -- Thymeleaf --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!
  • Spring Boot 不同版本與Spring cloud 的對應關係
    現在微服務越來越受歡迎,而正好spring cloud提供了一站式的微服務解決方案,它利用Spring Boot的開發便利性巧妙的簡化了分布式系統基礎設施的搭建,然而問題來了,很多開發者在一開始接觸它的時候,只知道spring cloud的開發是依賴於spring boot框架,但卻並不知道spring boot的不同版本與spring cloud是有對應關係的,用大白話說,有些spring
  • Spring Boot 教程:國際化
    【注】本文譯自: https://www.tutorialspoint.com/spring_boot/spring_boot_internationalization.htmMaven<dependency>   <groupId>org.springframework.boot</groupId> 
  • 深入理解Spring Boot
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration,\org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
  • 關於spring boot簡介
    應用程式:<pre style=&34;><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.5.RELEASE
  • Spring Boot源碼解析——Spring Boot系列
    一、自動裝配原理  之前博文已經講過,@SpringBootApplication繼承了@EnableAutoConfiguration,該註解導入了AutoConfigurationImport Selector,這個類主要是掃描spring-boot-autoconfigure
  • spring-boot-plus 1.1.0 發布,集成 Spring Boot Admin 管理和監控...
    Spring Boot Admin Client註冊(通過HTTP)或使用SpringCloud®(例如Eureka,Consul)發現 UI是Spring Boot Actuator端點上的Vue.js應用程式 此項目中,Server和Client在一個項目中👉 Spring Boot Admin官方文檔pom.xml依賴spring boot admin版本聲明,與spring
  • Spring Boot快速入門之(一)——簡介
    【注】本文譯自:https://www.tutorialspoint.com/spring_boot/spring_boot_quick_guide.htm比如:要想使用Spring和JPA進行資料庫訪問,你只要在項目裡引入 spring-boot-starter-data-jpa 就可以了。