Udemy 課程Microservices with Spring 3-回顧Spring Boot
在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內
所以~程式自己發現在執行過程有用到相關套件,
就自己組建DispatcherServletAutoConfiguration
DispatcherServlet針對send過來的Http Request轉交給對應的Controller Method
其他還有別的XXXXXXXXXXXXX matched: (同理)
在我們建置的class內不一定會見到我們用到上面一堆有matched的套件
但過程我們其實是引用到jar裡面相關的套件,spring boot就自己幫我們建置
比如為什麼最後網頁回傳Bean的結果格式長得像json?
因為有HttpMessageConvertersAutoConfiguration及
JacksonAutoConfiguration
當@RestController要開始回傳結果時會做哪些事?
以ctrl點選@RestController詳看內容
見到實際@RestController內容如下
其中包含了上圖紅框的@ResponseBody
而@ResponseBody放在Controller會發生什麼事?
@ResponseBody將會使用HttpMessageConverter將回傳物件轉換其它格式
在此HttpMessageConverter將回傳物件轉為JSON格式
諸如此類Spring Boot的AutoConfiguration在背後把很多事都做掉了