歡迎關注我的微信公衆號: 小哈學Java, 文末分享阿里 P8 資深架構師吐血總結的 《Java 核心知識整理&面試.pdf》資源連接!!html
文章首發於我的網站 https://www.exception.site/springboot/spring-boot-undertowgit
本節中,您將學習如何在 Spring Boot 2.0 中配置 Undertow 容器。配置以前,您須要知道的是,Tomcat, Jetty, Undertow 做爲三大主流 Servelt 容器,Undertow 的性能要優於前二者。github
因此,咱們推薦您使用 Undertow 容器。接下來,就咱們看看如何在 Spring Boot 中快捷地集成 Undertow。web
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除掉默認支持的 Tomcat --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加 Undertow 容器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>
添加完上面的 maven 依賴後,Undertow 容器就已經集成完畢了,接下來,讓咱們啓動項目,看看控制檯輸出:面試
Connected to the target VM, address: '127.0.0.1:50915', transport: 'socket' . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.2.RELEASE) 2019-02-22 20:29:28.876 INFO 21908 --- [ main] s.e.s.SpringBootUndertowApplication : Starting SpringBootUndertowApplication on DESKTOP-RL6P6LA with PID 21908 (C:\dev\idea_workspace_personal\spring-boot-tutorial\spring-boot-undertow\target\classes started by allen in C:\dev\idea_workspace_personal\spring-boot-tutorial) 2019-02-22 20:29:28.885 INFO 21908 --- [ main] s.e.s.SpringBootUndertowApplication : No active profile set, falling back to default profiles: default 2019-02-22 20:29:34.388 WARN 21908 --- [ main] io.undertow.websockets.jsr : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used 2019-02-22 20:29:34.478 INFO 21908 --- [ main] io.undertow.servlet : Initializing Spring embedded WebApplicationContext 2019-02-22 20:29:34.478 INFO 21908 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 5449 ms 2019-02-22 20:29:35.471 INFO 21908 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2019-02-22 20:29:36.423 INFO 21908 --- [ main] org.xnio : XNIO version 3.3.8.Final 2019-02-22 20:29:36.447 INFO 21908 --- [ main] org.xnio.nio : XNIO NIO Implementation Version 3.3.8.Final 2019-02-22 20:29:36.614 INFO 21908 --- [ main] o.s.b.w.e.u.UndertowServletWebServer : Undertow started on port(s) 8080 (http) with context path '' 2019-02-22 20:29:36.621 INFO 21908 --- [ main] s.e.s.SpringBootUndertowApplication : Started SpringBootUndertowApplication in 8.912 seconds (JVM running for 10.232) 2019-02-22 20:29:48.534 INFO 21908 --- [ XNIO-1 task-1] io.undertow.servlet : Initializing Spring DispatcherServlet 'dispatcherServlet' 2019-02-22 20:29:48.534 INFO 21908 --- [ XNIO-1 task-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2019-02-22 20:29:48.547 INFO 21908 --- [ XNIO-1 task-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 12 ms
啓動成功,當您看到 Undertow started on port(s) 8080 (http) with context path ''
的行輸出時,說明此時正在使用的是 Undertow 容器,而非 Tomcat !spring
您能夠針對 Undertow 容器作一些特定配置,如日誌輸出路徑,設置工做者線程的個數等參數優化等,以下所示:tomcat
# 是否打開 undertow 日誌,默認爲 false server.undertow.accesslog.enabled=false # 設置訪問日誌所在目錄 server.undertow.accesslog.dir=logs # 指定工做者線程的 I/0 線程數,默認爲 2 或者 CPU 的個數 server.undertow.io-threads= # 指定工做者線程個數,默認爲 I/O 線程個數的 8 倍 server.undertow.worker-threads= # 設置 HTTP POST 內容的最大長度,默認不作限制 server.undertow.max-http-post-size=0
在文章的開始,咱們提到過 Undertow 的性能要優於 Tomcat, 可是口說無憑,須要拿出實際的證據,新建一個 Web 項目,經過 JDK 自帶的工具對比一下各項指標狀況:springboot
先看看 Tomcat:微信
能夠看到,Tomcat 大約使用了 110M 的堆內存以及大約 16 個線程數!websocket
再來看看輕量級 Servlet 容器 Undertow 的指標:
Undertow 的內存使用狀況大約爲 90M, 線程數大約 13 個線程的樣子。這仍是在應用不復雜的狀況下,大型應用出入會更大。
https://github.com/weiwosuoai/spring-boot-tutorial/tree/master/spring-boot-undertow
最近在網上發現一個不錯的 PDF 資源《Java 核心知識&面試.pdf》分享給你們,不光是面試,學習,你都值得擁有!!!
獲取方式: 關注公衆號: 小哈學Java, 後臺回覆 資源,既可免費無套路獲取資源連接,下面是目錄以及部分截圖:
重要的事情說兩遍,關注公衆號: 小哈學Java, 後臺回覆 資源,既可免費無套路獲取資源連接 !!!
原文出處:https://www.cnblogs.com/quanxiaoha/p/10433092.html