上一节中我们了解到在SpringBoot项目中webServer默认支持的嵌入式容器是Tomcat,还可以切换到Jetty、Undertow。本节我们就将Tomcat切换到jetty、undertow容器。 由于SpringBoot将Tomcat作为默认的应用容器,因此在使用Jetty和Undertow容器之前要先把Tomcat的jar包排除掉。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>12345678910复制代码类型:[java] 使用Jetty容器: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>1234复制代码类型:[java] 使用Undertow容器: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>1234复制代码类型:[java] 关于pom.xml文件配置,我们需要知道以上三者的优先级顺序是: Tomcat>Jetty>Undertow 使用Jetty、Undertow时,必须将Tomcat容器移除掉 使用Undertow时,需要将Jetty的依赖移除掉,因为Jetty的优先级高于Undertow 使用Jetty时,Undertow的依赖可以不移除 配置参数在官方文档编号11中可以找到关于Jetty、Undertow的配置参数: https://docs./spring-boot/docs/current/reference/html/application-properties.html#application-properties.server 常用配置参数Jetty
Undertow
在application.yml文件中的写法Jetty server: port: 8888 jetty: # 要使用的接受器线程数,默认值为-1 acceptors: -1 # 要使用的选择器线程数,默认值为-1 selectors: -1 # 工作线程池最小线程数量,默认值为8 min-threads: 8 # 工作线程池最大线程数量,默认值为200 max-threads: 2001234567891011复制代码类型:[java] Undertow server: port: 8888 undertow: # 创建的 I/O 线程数。默认值来自可用处理器的数量 io-threads: 5 # 工作任务线程数。默认值是 I/O 线程数的 8 倍 worker-threads: 40 # 用于url解码的字符集,默认值为UTF-8 url-charset: UTF-8123456789复制代码类型:[java] Undertow的性能和内存使用方面都优于Tomcat,在高并发系统中,Tomcat相对来说比较弱。 在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。 在之前我们所有的应用代码都是用jar包的方式去运行的,下面我们来学习如何打war包。 为了方便演示,重新创建一个SpringBoot项目。重新创建的过程与之前想同,需要注意的是打包方式这次直接选择war包: 新的项目创建好后,在com.example.demo文件夹下创建controller文件夹并在其中创建TemplateController.java package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class TemplateController { @GetMapping("/template") public String test(String name) { return "Hello " + name; } }123456789101112复制代码类型:[java] 之后在pom.xml中的build代码段添加应用最终构建打包的名称: <finalName>family</finalName>1复制代码类型:[java] 在idea下方的Terminal中编写命令: mvn clean package1复制代码类型:[java] 打包结果将存储在项目的target目录下面,将war包移动到Tomcat的webapps目录中。 在tomcat的bin目录下执行startup.sh(linux)/startup.bat(windows)。 由于Tomcat在占用的是8080端口,所以在浏览器进行测试时输入的链接应为:http://localhost:8080/family/template?name=world 得到返回结果。 |
|