Udemy 課程Microservices with Spring 3-回顧Spring Boot

Spring Boot背後做了什麼事

ZONGRU Li
4 min readJun 14, 2019

在application.properties內加入debug mode:

logging.level.org.springframework=debug

執行RestfulWebServicesApplication

見到CONDITIONS EVALUATION REPORT(或稱為auto configuration report)

往下拉其中一筆是:

上面的意思是:

DispatcherServletAutoConfiguration比對到,因為在某個class內有包含了

DispatcherServlet的相關內容!

當然我們檢查目前建幾個class會找不到哪一支程式有呼叫DispatcherServlet

因為DispatcherServlet是包含在spring-boot-starter-web

而spring-boot-starter-web是包裹在Spring Web MVC內

在當初spring.io選擇的web選項內↑

所以~程式自己發現在執行過程有用到相關套件,

就自己組建DispatcherServletAutoConfiguration

DispatcherServlet針對send過來的Http Request轉交給對應的Controller Method

其他還有別的XXXXXXXXXXXXX matched: (同理)

在我們建置的class內不一定會見到我們用到上面一堆有matched的套件

但過程我們其實是引用到jar裡面相關的套件,spring boot就自己幫我們建置

比如為什麼最後網頁回傳Bean的結果格式長得像json?

因為有HttpMessageConvertersAutoConfiguration及

JacksonAutoConfiguration

Spring Boot相關套件有用到,並自動組建

當@RestController要開始回傳結果時會做哪些事?

以ctrl點選@RestController詳看內容

見到實際@RestController內容如下

其中包含了上圖紅框的@ResponseBody

而@ResponseBody放在Controller會發生什麼事?

@ResponseBody將會使用HttpMessageConverter將回傳物件轉換其它格式

在此HttpMessageConverter將回傳物件轉為JSON格式

諸如此類Spring Boot的AutoConfiguration在背後把很多事都做掉了

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet