Servlet容器自動配置類為ServletWebServerFactoryAutoConfiguration
可以看到通過@Import注解導入了三個配置類:
通過這個這三個配置類可以看出,它們都使用了@ConditionalOnClass注解,當類路徑存在tomcat相關的類時,會配置一個TomcatServletWebServerFactory類型的bean, 當類路徑存在jetty相關的類時,會配置一個JettyServletWebServerFactory 類型的bean, 當類路徑存在undertow相關的類時,會配置一個UndertowServletWebServerFactory類型的bean。
這樣就完成了根據pom.xml中引入了不同的依賴來決定使用哪種Servlet容器。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId></dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency>