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

十四,在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 控制器。

在这里插入图片描述

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";}
}

编写测试项目的场景启动器:

在这里插入图片描述

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 无法识别到,就会报错了。

在这里插入图片描述

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.xdnf.cn/news/141472.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Git项目管理工具

分布式版本控制系统

62. 不同路径、64. 最小路径和

思路 dp&#xff1a;代表到达当前位置的总方式 初始化&#xff1a;第一行的位置dp[0][j]&#xff1a;当前位置只能由左边的位置向右移动得到 所以只有1种方式 d[0][j]1, d[0][0]1 第一列的位置 dp[i][0]&#xff1a;当前位置只能由上一个位置向下移动得到 除此之外的位置可以由…

【Python】基本使用

目录 变量的类型 整数 int 浮点数 float 字符串 str 字符串长度 格式化字符串 布尔类型 动态类型 注释 获取输入 浮点数比较 多元赋值 for循环 函数的定义和调用 创建函数/定义函数 调用函数/使用函数 列表 创建列表 切片操作 遍历列表 新增元素 判断元…

2024最全网络安全工程师面试题(附答案),金九银十找工作必看!

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

[matlab]matlab调用python的各种方法

前言 在MATLAB中&#xff0c;可以使用 py 函数来调用Python模块和函数。在此基础上&#xff0c;我们可以很轻易的调用python中的各种模块&#xff0c;方便我们在神经网络上的应用仿真。 以下是使用MATLAB调用Python模块的基本步骤&#xff1a; 确保你的系统已经正确安装了Py…

文心一言 VS 讯飞星火 VS chatgpt (347)-- 算法导论23.2 6题

六、假定一个图中所有的边权重均匀分布在半开区间[0,1)内。Prim算法和Kruskal算法哪一个可以运行得更快&#xff1f;如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在比较Prim算法和Kruskal算法在特定条件下的性能时&#xff0c;我们需要考虑几个因素&#xff…

复杂情感识别系统

复杂情感识别系统&#xff08;CERS&#xff09;是一种先进的技术平台&#xff0c;旨在通过分析情感的组合、相互关系及其动态变化来解读和识别复杂的情感状态。这种系统通常采用以下技术和方法&#xff1a; 机器学习与深度学习&#xff1a; 通过训练算法识别和解释大量情感数据…

[Linux]:进程间通信(上)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;Linux学习 贝蒂的主页&#xff1a;Betty’s blog 1. 进程间通信介绍 1.1 进程间通信的概念 进程间通信简称IPC&#xff08;In…

jdk相关介绍

JDK&#xff0c;全称Java Development Kit&#xff0c;是Java语言开发的基础工具包。它包含了Java运行时环境&#xff08;JRE&#xff09;以及用于开发Java应用程序的各种工具和库。JDK为Java程序员提供了编译、调试和运行Java应用程序所需的全部环境。 JDK的主要组成部分包括&…

离线数仓DWD层

离线数仓DWD层 DWD层设计要点&#xff1a;9.1 交易域加购事务事实表9.2 交易域下单事务事实表9.3 交易域取消订单事务事实表9.4 交易域支付成功事务事实表9.5 交易域退单事务事实表9.6 交易域退款成功事务事实表9.7 交易域购物车周期快照事实表9.8 工具域优惠券领取事务事实表9…

2024/9/15 408“回头看”之应用层小总结(下)

域名系统DNS: 本地域名服务器 本地域名服务器起着代理的作用&#xff0c;会将报文转发到根域名服务器、顶级域名服务器、权限域名服务器。 递归查询&#xff1a; 迭代查询&#xff1a; 文件传送协议FTP: FTP客户和FTP服务器之间使用的是tcp连接。 控制连接使用21端口&…

树莓派5上手

1 安装系统 Raspberry Pi OS 是基于 Debian 的免费操作系统&#xff0c;针对 Raspberry Pi 硬件进行了优化。Raspberry Pi OS 支持超过 35,000 个 Debian 软件包。树莓派 5 可以安装各种系统&#xff0c;但是如果对于系统没有特殊的要求&#xff0c;还是安装 Raspberry Pi OS …

基于SSM的二手车管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的二手车管理系统4拥有三种角色 管理员&#xff1a;订单管理、在售车辆管理、下架车辆管理、品牌管理、分类管理、推荐管理、统计等 商家&#xff1a;登录注册、添加/下架/删除车辆…

各类元器件调试记录-E+H

一、EH压力传感器 适用型号为&#xff1a; Cerabar S PMC71, PMP71/75 Deltabar S FMD76/77/78, PMD70/75 Deltapilot S FMB70 调试过程&#xff1a;(后续补上图片) 一、湿标(湿调) 1、前提条件&#xff1a;罐体可以灌满和实际水箱水位高度 2、调试步骤&#xff1a; A、调节语…

网络安全有救了,37所高校新增网络安全空间安全专业

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

凸优化学习(3)——对偶方法、KKT条件、ADMM

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

鸿蒙交互事件开发07——手势竞争问题

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下方名片&#xff0c;关注公众号&#xff0c;公众号更新更快&#xff0c;同时也有更多学习资料和技术讨论群。 1、背景 在文章鸿蒙交互事件开发05——常用的6种手势类型中&#xff0c;有朋友留言…

C语言自定义类型-联合与枚举

在之前的文章中&#xff0c;我们学到了结构体类型&#xff0c;而结构体其实归属于一个大类——自定义类型。那么今天我们就继续讲解关于自定义类型的知识~ 一、类型命名关键字-typedef typedef的作用其实就是标题的意思——为一种类型赋予新的名字。 ① typedef在变量中的应…

Java【集合】

一、集合的概述 集合建立在数组基础上&#xff0c;主要位于java.util包中&#xff0c;用来存储Java类对象&#xff0c;并且可以实现各种数据结构。 集合大小可以改变&#xff0c;可以存放不同数据类型数据。集合不能存放基本类型数据&#xff0c;只能存放引用数据类型数据。集…

力扣题解2848

大家好&#xff0c;欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述&#xff08;简单&#xff09;&#xff1a; 与车相交的点 给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i&#xff0c;nums[i] [starti, endi] &…