目錄
官方檔案描述:
擴展SpringMVC
容器中實作一個視圖決議器
轉換器和格式化器
修改SpringBoot的默認配置
全面接管SpringMVC
Spring Boot 為 Spring MVC 提供了自動配置,適用于大多數應用程式,
官方檔案描述:
自動配置在 Spring 的默認值之上添加了以下功能:

從官方描述決議:
If you want to keep Spring Boot MVC features and you want to add
additionalMVC configuration (interceptors, formatters, view controllers,
and other features), you can add your own
@Configuration class of type WebMvcConfigurer but without @EnableWebMvc.
擴展SpringMVC
由于WebMvcConfigurer是個介面
![]()
創建一個MyMvcConfig實作這個介面


之前我們學的視圖決議器是我們手動配置

ViewResolver 實作了視圖決議器介面的類,就看做是視圖決議器

搜索ContentNegotiatingViewResolver,找到如下方法resolveViewName!找到對應的視圖決議代碼
從 getCandidateViews中看到它是把所有的視圖決議器拿來,進行遍歷回圈
結論:ContentNegotiatingViewResolver 這個視圖決議器就是用來組合所有的視圖決議器的

可以看出它是從容器中去找視圖決議器,我們也可以在容器中實作一個視圖決議器!
容器中實作一個視圖決議器
1、我們在主程式中去寫一個視圖決議器;

2、如何看我們自己寫的視圖決議器是否起了作用呢?
我們給 DispatcherServlet 中的 doDispatch方法 加個斷點進行除錯一下,因為所有的請求都會走到這個方法中!

3、我們啟動我們的專案,然后隨便訪問一個頁面,看一下Debug資訊,找到this

4、找到視圖決議器,我們看到我們自己定義的就在這里了;

所以說,我們如果想要使用diy定制的東西,我們只需要給容器中添加這個組件就好了,SpringBoot就會幫我們自動裝配!
轉換器和格式化器
找到格式化轉換器:

點進去可以看到

如果配置了自己的格式化方式,就會注冊到Bean中生效,我們可以在組態檔中配置日期格式化的規則:可以看到在我們的Properties檔案中,我們可以進行自動配置它!


修改SpringBoot的默認配置


結論:我們要擴展SpringMVC,官方就推薦我們這么去使用,既保SpringBoot留所有的自動配置,也能用我們擴展的配置!
分析一下原理:
1、WebMvcAutoConfiguration 是 SpringMVC的自動配置類,里面有一個類WebMvcAutoConfigurationAdapter
2、這個類上有一個注解,在做其他自動配置時會匯入:@Import(EnableWebMvcConfiguration.class)
3、我們點進EnableWebMvcConfiguration這個類看一下,它繼承了一個父類:DelegatingWebMvcConfiguration
這個父類中有這樣一段代碼:

4、我們可以在這個類中去尋找一個我們剛才設定的viewController當做參考,發現它呼叫了一個
protected void addViewControllers(ViewControllerRegistry registry) {
this.configurers.addViewControllers(registry);
}
5、我們點進去看一下
public void addViewControllers(ViewControllerRegistry registry) {
Iterator var2 = this.delegates.iterator();
while(var2.hasNext()) {
// 將所有的WebMvcConfigurer相關配置來一起呼叫!包括我們自己配置的和Spring給我們配置的
WebMvcConfigurer delegate = (WebMvcConfigurer)var2.next();
delegate.addViewControllers(registry);
}
}
結論:所有的WebMvcConfiguration都會被作用,不止Spring自己的配置類,我們自己的配置類當然也會被呼叫
全面接管SpringMVC
全面接管即:SpringBoot對SpringMVC的自動配置不需要了,所有都是我們自己去配置!
只需在我們的配置類中要加一個@EnableWebMvc,
我們開發中,不推薦使用全面接管SpringMVC
1、這里看到它是匯入了一個類,繼續點進去看

2、它繼承了一個父類 WebMvcConfigurationSupport

3、回顧一下Webmvc自動配置類

總結:@EnableWebMvc將WebMvcConfigurationSupport組件匯入進來;
而匯入的WebMvcConfigurationSupport只是SpringMVC最基本的功能!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307228.html
標籤:java
上一篇:MySQL資料庫——事務和索引
