在工作中,通過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