(一)其他Servlet容器介紹和優勢
Jetty的架構比Tomcat的更爲簡單。Jetty可以同時處理大量連接而且可以長時間保持連接,適合於web聊天應用等等。
Jetty的架構簡單,因此作爲服務器,Jetty可以按需加載組件,減少不需要的組件,減少了服務器內存開銷,從而提高服務器性能。
Jetty默認採用NIO。在處理I/O請求上更佔優勢,在處理靜態資源時,性能較高。Tomcat適合處理少數非常繁忙的鏈接,也就是說鏈接生命週期短的話,Tomcat的總體性能更高。Tomcat默認採用BIO處理I/O請求,在處理靜態資源時,性能較差。Jetty的應用更加快速,修改簡單,對新的Servlet規範的支持較好。Tomcat目前應用比較廣泛,對JavaEE和Servlet的支持更加全面,很多特性會直接集成進來。相較於undertow,在併發量不高的情況下 , Tomcat與undertow的吞吐量區別不大 , 併發量高的情況下 , undertow的性能要優於Jetty與Tomcat.
備註:SpringBoot內部嵌入了三個Servlet容器,可以進行選擇切換。包括:
Jetty、Tomcat、undertow.默認是使用Tomcat容器.
SpringBoot 2.X新增了Netty容器,變成了四個可選擇的容器
(二)切換方式
1:tomcat依賴排除
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
2:引入其他的servlet容器
切換jetty容器
<dependency>
<artifactId>spring-boot-starter-jetty</artifactId>
<groupId>org.springframework.boot</groupId>
</dependency>
切換undertow容器
<dependency>
<artifactId>spring-boot-starter-undertow</artifactId>
<groupId>org.springframework.boot</groupId>
</dependency>