1. 程式人生 > >Spring Boot中關於自行配置SpringMVC自動配置的一些見解

Spring Boot中關於自行配置SpringMVC自動配置的一些見解

作為一個初學者小白,並且是第一次發部落格,希望讀者能夠給以寬容的態度
今天在學習SpringBoot的過程中,發現自行配置SpringMVC的時候和以前發生了一些變化.
這裡插入圖片描述
如上圖所示,以自行配置ViewConfigurer為例,之前繼承的是WebMvcConfigurerAdapter,然而在編寫程式碼的過程中,我發現WebMvcConfigurerAdapter這個抽象類無法繼承,之後通過閱讀博主
cormye 的博文了解到WebMvcConfigurerAdapter在SpringBoot2.0及Spring 5.0 WebMvcConfigurerAdapter已被廢棄。
具體可以用兩個方法代替:

1 直接實現WebMvcConfigurer (官方推薦)

@Configuration
public class WebMvcConfg implements WebMvcConfigurer {

    //todo

}

2 直接繼承WebMvcConfigurationSupport

@Configuration
public class WebMvcConfg extends WebMvcConfigurationSupport {

        //todo

}

然而我試了兩種方法後發現略有不同
我們知道如果新增@EnableWebMvc註解後,我們就全權接管配置,不再使用SpringBoot的自動配置
而在WebMvcAutoConfiguration.class這個自動配置檔案下有一個關於歡迎頁的配置對映,也就是靜態資原始檔夾下的所有index.html頁面;被"/**"對映,可以理解為:當我訪問localhost:8080/(/後可以是任何值)時,網頁顯示的就是靜態資源下的index.html,即為下圖所示:
在這裡插入圖片描述

當我們標註@EnableWebMvc後,SpringBoot自動配置的靜態資源對映就會取消,由我們自己全權接管。在這個時候,我發現用第一方法就是implements WebMvcConfigurer,不標註@EnableWebMvc時,不會完全接管自動配置,而是互補,我訪問localhost:8080/後,依舊能找到靜態資源下的index.html。標註@EnableWebMvc後,自動配置失效,訪問localhost:8080/,報404,這是正常的程式流程。
不過當我用第二個方法 extends WebMvcConfigurationSupport 後,我發現不論是否標註@EnableWebMvc,訪問localhost:8080/,都無法找到靜態資源下的index.html。
我的理解是:用第二種方法就相當於預設加上@EnableWebMvc,自動配置失效。
所以官方推薦使用第一種方法,畢竟SpringBoot給我們提供的自動配置極其方便,我們只要去後續補全我們的配置即可