十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明

devtools/2024/9/22 20:56:06/
webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明

文章目录

  • 十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明
  • 1. 基本介绍
  • 2. 准备工作:
  • 3. 内置 Tomcat 的配置
    • 3.1 第一种方式:通过 application.yaml 完成对 Tomcat 的配置
    • 3.2 第二种方式:通过类来配置 Tomcat 服务器 / 容器
  • 4. 切换Spring Boot 使用的服务器(这里切换为 Undertow)
  • 5. 最后:


1. 基本介绍

  1. Spring Boot 支持的 webServlet: Tomcat,Jetty,or Undertow 。

  2. Spring Boot 应用启动的是 Web 应用时,web场景包-导入 tomcat

在这里插入图片描述

  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 的配置,有两种方式:

  1. 第一种方式通过 application.yaml 完成对 Tomcat 的配置
  2. 第二种方式:通过类来配置 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. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述


http://www.ppmy.cn/devtools/115646.html

相关文章

Contact Form 7最新5.9.8版错误修复方案

最近有多位用户反应Contact Form 7最新5.9.8版的管理页面有错误如下图所示 具体错误文件的路径为wp-content\plugins\contact-form-7\admin\includes\welcome-panel.php on line 153 找到welcome-panel.php这个文件编辑它&#xff0c;将如下图选中的部分删除 删除以后&#xf…

DIN模型实现推荐算法

1. 项目简介 项目A030-DIN的核心是通过深度学习技术实现个性化推荐算法&#xff0c;旨在为用户提供精准、高效的商品或内容推荐。在现代电子商务、社交媒体及内容平台中&#xff0c;推荐系统作为核心功能&#xff0c;极大地提升了用户体验。DIN&#xff08;Deep Interest Netw…

【每天学个新注解】Day 2 Lombok注解简解(一)—@Data、@Build、@Value

Data 相当于同时使用了 Getter 、Setter 、RequiredArgsConstructor、ToString、EqualsAndHashCode 1、如何使用 需要同时使用Getter 、Setter 、RequiredArgsConstructor、ToString、EqualsAndHashCode注解一个Bean的时候。 2、代码示例 例&#xff1a; Data public cla…

Rust 运算符快速了解

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 4.1 运 算 符 前面已经学习了变量和常量&#xff0c;本节开始对它们进行操作&am…

Python的学习步骤

学习Python可以分为几个步骤&#xff0c;每个步骤都有其特定的学习方法和资源。以下是一个推荐的Python学习路径&#xff1a; 1. **基础知识**&#xff1a; - 学习Python的基本语法&#xff0c;包括变量、数据类型、运算符、控制流&#xff08;if语句、循环&#xff09;等。…

深入解析 JVM 运行时数据区:实战与面试指南

Java 虚拟机 (JVM) 是 Java 开发者的核心工具之一&#xff0c;它不仅负责执行 Java 字节码&#xff0c;而且还管理着应用程序运行时的数据存储。在本文中&#xff0c;我们将继续深入探讨 JVM 的运行时数据区&#xff0c;并通过实际案例和常见面试问题来帮助读者更好地理解和应用…

vue 中如何实现鼠标拖动出发滚动条的跟随移动?

使用场景 在做弹窗、表单或 tab 切换需求的时候&#xff0c;有时候因为内容过长会导致出现滚动条&#xff0c;但是只能拖动滚动条时会导致操作不便&#xff0c;我们会希望实现通过拖动内容区实现滚动条的滑动。这样操作就会简单多了。 实现思路 如果要实现鼠标辅助触发滚动条…

【Unity设计模式】Unity MVC/MVP架构介绍,及MVC/MVP框架的简单应用

文章目录 什么是MVC&#xff1f;MVC眼花缭乱设计图MVP和MVC最经典的MVC的业务流程Unity MVC 框架示例1. 创建项目结构2. 实现模型3. 实现视图4. 实现控制器5. 使用示例 总结参考完结 什么是MVC&#xff1f; MVC自1982年被设计出来&#xff0c;至今都有着很大比重的使用率&…