@EnableWebMvc 注解會讓Swagger無效訪問的問題


在工作中,通過Swagger2對項目的controller進行配置,以便於用戶測試restful服務接口提高開發效率。

但是今天卻出現了一個讓我匪夷所思的問題就是在配置類里面加上@EnableWebMvc注解后(開啟web配置支持)啟動項目

發現訪問Swagger的ui界面404

 

這個我就奇怪了,然后我嘗試的把@EnableWebMvc注解放到啟動類上

 

發現Swagger-ui.html又可以訪問到了,我記的@SpringBootApplication是默認開啟自動配置webMvc的呀,那為什么會這樣子呢,

通過查找資料發現@EnableWebMvc這個注解不建議直接配置到@Configuration上

@EnableWebMvc注解會全面接管SpringMVC,所有的SpringMVC的自動配置都失效了,通常不這么干。

查看@EnableWebMvc源碼發現,是繼承的WebMvcConfigurationSupport

 

然后我去查了SpringBoot對MVC的自動配置WebMvcAutoConfiguration發現

@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
發現@EnableWebMvc加入之后會會取消SpringBoot的自動配置,自會提供最基礎的功能

 所以根據總結不難發現,springboot對MVC的自動配置已經幫助我們配置了應用開發中大部分的功能,我們幾乎不用去關閉修改,當然對Swagger的配置SpringBoot也幫助我們

自動配置完成。

所以當我們取消SpringBoot自動配置的時候加上了@EnableWebMvc之后,就需要自己配置Swagger

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM