SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò),如圖
Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.這個(gè)錯(cuò)誤
可以看出ServletWebServerFactory在sping容器啟動(dòng)時(shí)沒(méi)有將其注冊(cè)進(jìn)去,缺少相關(guān)依賴(lài)。沒(méi)有對(duì)應(yīng)的servelt容器,工程當(dāng)然也就啟動(dòng)不起來(lái)。這里多講一下,springboot工程會(huì)通過(guò)@EnableAutoConfiguration這個(gè)注解去拉去默認(rèn)配置,該注解通過(guò)@Import注解導(dǎo)入了AutoConfigurationImportSelector類(lèi)。其實(shí)這個(gè)類(lèi),就是導(dǎo)入通過(guò)加載配置文件,加載了很多工廠方法的配置類(lèi)。最終會(huì)加載 META-INF/spring.factories這些文件,通過(guò)這些文件完成自動(dòng)裝配。@Import注解加載了tomcat,jetty,undertow三個(gè)web服務(wù)器的配置類(lèi)。由于沒(méi)有導(dǎo)入jetty和undertow的相關(guān)jar包,這兩個(gè)類(lèi)實(shí)例的不會(huì)真正的加載。到這里分析,為什么會(huì)缺少相應(yīng)的servlet容器?springboot不默認(rèn)加載了tomcat容器嗎,因?yàn)閠omcat的相關(guān)jar包已經(jīng)在spring-boot-starter-web中引入了,按照之前我們的分析,實(shí)際上被加載的容器應(yīng)該是tomcat,為什么還會(huì)找不到呢?
所以在項(xiàng)目里找spring-boot-starter-tomcat這個(gè)依賴(lài),發(fā)現(xiàn)沒(méi)有。。。。。
竟然沒(méi)有!
手動(dòng)添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
重新運(yùn)行,可以了文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-629709.html
當(dāng)然還有各種其他問(wèn)題也會(huì)導(dǎo)致沒(méi)有注冊(cè)到容器中,得自己一一排查文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-629709.html
到了這里,關(guān)于Unable to start web server; nested exception is org.springframework.context.ApplicationContextExcept的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!