十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明
文章目录
- 十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明
- 1. 基本介绍
- 2. 准备工作:
- 3. 内置 Tomcat 的配置
- 3.1 第一种方式:通过 application.yaml 完成对 Tomcat 的配置
- 3.2 第二种方式:通过类来配置 Tomcat 服务器 / 容器
- 4. 切换Spring Boot 使用的服务器(这里切换为 Undertow)
- 5. 最后:
1. 基本介绍
- 支持 Tomcat (也可以是Jetty,Undertow)的配置和切换。
2. 准备工作:
在 pom.xml 文件当中编写,需要导入的相关的jar
的依赖。如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.rainbowsea</groupId><artifactId>springboot_tomcatConfig</artifactId><version>1.0-SNAPSHOT</version><!-- 导入SpringBoot 父工程-规定写法--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version></parent><!-- 导入web项目场景启动器:会自动导入和web开发相关的jar包所有依赖【库/jar】--><!-- 后面还会在说明spring-boot-starter-web 到底引入哪些相关依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>
编写处理相关请求路径的 Controller 控制器。
java">package com.rainbowsea.springboot.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
// @Controller + @ResponseBody
public class testController {@GetMapping("/test")public String test() {return "test";}
}
编写测试项目的场景启动器:
java">package com.rainbowsea.springboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication // 表示 Spring Boot 启动场景
public class Application {public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(Application.class, args);}
}
3. 内置 Tomcat 的配置
对应 Tomcat 的配置,有两种方式:
- 第一种方式通过 application.yaml 完成对 Tomcat 的配置
- 第二种方式:通过类来配置 Tomcat 服务器
3.1 第一种方式:通过 application.yaml 完成对 Tomcat 的配置
配置和 ServerProperties.java 关联,通过查看源码得知有哪些属性配置(注意:是在类路径下配置该 application.yaml才行)
注意:一定要在 resources(类路径下)创建 applicaitonl.yaml 才行的。
spring:servlet:multipart:max-file-size: 10MBmax-request-size: 50MB
server:# 配置端口port: 999tomcat: # 对 tomcat 的配置threads:max: 10 # 最大的工作线程,默认是 2000min-spare: 5 # 最小工作线程,默认是10accept-count: 200 # tomcat 启动的线程达到最大值,接受排队的请求个数,默认是100max-connections: 2000 # 最大连接数,其实就是最大并发数,也就是说,tomcat最多可以同时(根据上面的配置:最大
# 线程,启动线程的最大值)进行分发处理,2000,有10个线程,每个线程处理200个请求。的并发数connection-timeout: 10000 # 建立连接的超时时间,单位是毫秒
启动运行测试:
关于更多的对应 yaml 的配置,大家可以移步至:✏️✏️✏️ 七,Spring Boot 当中的 yaml 语法使用-CSDN博客
3.2 第二种方式:通过类来配置 Tomcat 服务器 / 容器
我们可以通过实现 implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>
类 ,配置 tomcat 当中的配置,但是这种配置的方式,所能配置的属性更少一些。
注意需要在类当中配置:@Component
注解到类当中,将该类需要注入到 ioc 容器当中,交给 Spring 管理起来,才有效,不然,配置的信息,Spring Boot 无法识别到,就会报错了。
java">package com.rainbowsea.springboot.config;import org.springframework.boot.web.embedded.jetty.ConfigurableJettyWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;/*** 第二种方式:通过类来配置 Tomcat*/@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {@Overridepublic void customize(ConfigurableServletWebServerFactory serverFactory) {serverFactory.setPort(9090); // 我们设置了 server的端口为 9090}
}
运行测试:这里我们将端口改为了 9090
了,运行测试:
4. 切换Spring Boot 使用的服务器(这里切换为 Undertow)
我们想要切换掉Spring Boot内置的服务器(也就是Tomcat) ,就需要首先,把这个Spring Boot本身内置的Tomcat给移除出去。对于 Tomcat 的移除,移除之后,再配上,导入我们的 Undertow服务器/容器,在 pom.xml 文件上操作。
首先在 pom.xml 当中移除 Spring Boot 内置的 Tomcat 服务器,我们可以使用如下:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
<!-- 排斥 tomcat starter--><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>
可能移除 tomcat 后,你的有些内容会爆红,这是正常的,因为最开始的时候引入的 tomcat 里面的依赖
jar
包,进行开发的,你只需要将,哪些是用tomcat的jar的类/内容,注释掉即可。
移除之后,导入 undertow ,注意刷新,让maven重新加载,然后运行测试。
<!-- 引入 undertow 容器/服务器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId></dependency></dependencies>
完整的
pom.xml
文件的配置 编写:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.rainbowsea</groupId><artifactId>springboot_tomcatConfig</artifactId><version>1.0-SNAPSHOT</version><!-- 导入SpringBoot 父工程-规定写法--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version></parent><!-- 导入web项目场景启动器:会自动导入和web开发相关的jar包所有依赖【库/jar】--><!-- 后面还会在说明spring-boot-starter-web 到底引入哪些相关依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> <!-- 排斥 tomcat starter--><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></dependencies> </project>
运行测试:
5. 最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”