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

news/2024/9/18 19:28:54/ 标签: spring boot, tomcat, java, spring, web
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/news/1526188.html

相关文章

uniapp升级Vue3:避坑指南与步骤详解

为什么要升级到 Vue3 Vue3 是 Vue.js 的最新版本&#xff0c;相比 Vue2&#xff0c;它带来了许多改进和新特性&#xff0c;比如更小的包体积、更好的性能、更强大的组合式 API 等。通过升级到 Vue3&#xff0c;我们可以享受到这些新特性带来的好处&#xff0c;提升项目的开发效…

在服务器上开Juypter Lab教程(远程访问)

在服务器上开Juypter Lab教程&#xff08;远程访问&#xff09; 文章目录 在服务器上开Juypter Lab教程&#xff08;远程访问&#xff09;一、安装anaconda1、安装anaconda2、提权限3、运行4、同意协议5、安装6、是否要自动初始化 conda7、结束8、检查 二、Anaconda安装Pytorch…

精品PPT | 离散制造行业智能工厂总体解决方案

一、建设背景 离散制造业&#xff0c;包括机械制造业、汽车制造业和家电制造业等&#xff0c;其生产过程涉及多个不连续的工序&#xff0c;产品通常由多个零件装配而成。这类行业面临的挑战包括品种多、批量小、订单变化快、临时插单频繁以及外协件管理困难等问题&#xff0c;…

Unity-Transform类-父子关系

Transform拓展方法练习 public static class Tuozhan { 拓展方法&#xff0c;把子对象按名字长度排序 public static void Sortchild(this Transform obj) { List<Transform> Indexs new List<Transform>(); for (int i 0; i < obj.chil…

9. 什么是 Beam Search?深入理解模型生成策略

是不是总感觉很熟悉&#xff1f; 在之前第5&#xff0c;7&#xff0c;8篇文章中&#xff0c;我们都曾经用到过与它相关的参数&#xff0c;而对于早就有着实操经验的同学们&#xff0c;想必见到的更多。这篇文章将从示例到数学原理和代码带你进行理解。 Beam Search 对应的中文翻…

《上海体育大学学报》

投稿要求 &#xff08;1&#xff09;稿件格式&#xff1a;请参考《上海体育大学学报》论文模板&#xff0c;可前往官网“论文模板”下载。 &#xff08;2&#xff09;开设栏目&#xff1a;《专题探索》《学术争鸣》《原创成果》《研究综述》《热点透视》《新视点》等。 &…

Google 工程师开始用Rust 语言开发 Android 固件

Google 工程师最近开始尝试用 Rust 语言为 Android 虚拟化框架&#xff0c;他们用Rust语言重写了保护虚拟机的固件。Google工程师 Ivan Lozano 和 Dominik Maier 在官方博客上鼓励其他开发者也用 Rust 开发固件&#xff0c;表示并不难。 众所周知&#xff0c;系统固件通常是用…

第二十四章 加密安全标头元素 - 基本示例

文章目录 第二十四章 加密安全标头元素 - 基本示例 第二十四章 加密安全标头元素 - 基本示例 以下示例调用 Web 客户端并发送已加密的 <UsernameToken>。在此示例中&#xff0c;正文未加密。 Set client##class(XMLEncrSecHeader.Client.XMLEncrSecHeaderSoap).%New()//…

【组件】前端js HEIC/HEIF 转换为JPEG、PNG或GIF格式 苹果格式

【组件】前端js HEIC/HEIF 转换为JPEG、PNG或GIF格式 Heic2any: Client-side conversion of HEIC/HEIF image files to JPEG,PNG, or GIF in the browser.https://alexcorvi.github.io/heic2any/#demo GitHub - alexcorvi/heic2any: Converting HEIF/HEIF image formats to PN…

【QT】常用控件-下

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;QT 目录 &#x1f449;&#x1f3fb;QComboBox&#x1f449;&#x1f3fb; QSpinBox&#x1f449;&#x1f3fb;QDateTimeEdit&#x1f449;&#x1f3fb;QD…

华为ensp:WLAN的无线综合实验

一、WLAN的知识点 1.WLAN的概念&#xff1a;WLAN是一种无线局域网技术&#xff0c;用于实现局部区域内的计算机设备互联和资源共享。 2.WLAN的工作原理&#xff1a;主要涉及无线网卡、接入控制器设备(AC)、无线接入点(AP)等关键组件的协同工作。 3.建立CAPWAP隧道阶段 4.为确…

优化安防视频监控的关键体验:视频质量诊断技术如何应用在监控系统中?

随着科技的不断进步&#xff0c;视频监控平台在公安、司法、教育、基础设施等众多领域得到了广泛应用。然而&#xff0c;视频图像的质量直接关系到监控系统的应用效果&#xff0c;是反映监控系统运维效果的重要指标之一。因此&#xff0c;视频监控平台需要配备一系列先进的视频…

计算机毕业设计选题推荐-项目评审系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

替换传统数据处理平台,TDengine 与华风数据达成合作

在全球能源转型的大背景下&#xff0c;新能源产业正迎来前所未有的发展机遇。随着国家对可再生能源的政策支持和市场需求的不断增长&#xff0c;风电、光伏和储能等新能源项目如雨后春笋般蓬勃发展。然而&#xff0c;随之而来的数据处理与管理挑战也日益凸显。面对海量的设备运…

返回当前栈内最小元素

设计一个栈&#xff0c;包含传统的push&#xff0c;pop&#xff0c;top方法。此外&#xff0c;再设计一个getMin函数&#xff0c;用于返回栈内最小的元素。 思想&#xff1a;存储普通的数据元素用eStack,存储最小值用栈minStack。当eStack存一个元素时&#xff0c;minStack记录…

react native(expo)选择图片/视频并上传阿里云oss

1.引入相关库&#xff1a; ant-design/react-native ant风格UI库 expo-file-system 文件访问 expo-image-picker 图片/视频选择器 2.新建图片选择并上传的帮助类 import { Toast } from ant-design/react-native; import * as FileSystem from "expo-file-system"…

Android系列基础知识总结

四大组件 Activity Activity生命周期 不同场景下Activity生命周期的变化过程 启动Activity&#xff1a; onCreate()—>onStart()—>onResume()&#xff0c;Activity进入运行状态。Activity退居后台&#xff1a; 当前Activity转到新的Activity界面或按Home键回到主屏&a…

前端-CDN的理解及CDN一些使用平台

目录 1.CDN的概念 &#xff08;1&#xff09; 分发服务系统 &#xff08;2&#xff09;均衡负荷系统 &#xff08;3&#xff09;运营管理系统 &#xff08;4&#xff09;缓存系统 &#xff08;5&#xff09;支撑系统 2.CDN的基本工作原理 3.CDN使用缓存资源过程 4.CDN…

前端Vue框架实现html页面输出pdf(html2canvas,jspdf)

代码demo&#xff1a; <template><el-dialog class"storageExportDialog" :fullscreen"true" title"" :visible.sync"visible" v-if"visible" width"600px"><div id"exportContainer" …

[极客大挑战 2019]Http

1、访问题目链接 2、查看页面源码发现一个Secret.php的跳转页面 3、访问Secret.php发现页面有提示&#xff0c;它说它不是来自这个网页 4、抓包修改来源 添加&#xff1a;Referer: https://Sycsecret.buuoj.cn 发送查看响应 5、修改User-Agent为&#xff1a;Syclover 6、添加X-…