Spring Boot自动配置--如何切换内置Web服务器

news2025/2/23 13:03:24

系列文章目录

Spring Boot[概述、功能、快速入门]_心态还需努力呀的博客-CSDN博客

Spring Boot读取配置文件内容的三种方式_心态还需努力呀的博客-CSDN博客

Spring Boot整合Junit_心态还需努力呀的博客-CSDN博客 

该系列文章持续更新中~


目录

系列文章目录

前言

一、默认tomcat服务器

二、查看内置服务器种类

三、编写坐标 

 四、效果图

总结


前言

SpringBoot的web环境中默认使用tomcat作为内置服务器,其实SpringBoot提供了四种内置服务器供我们选择,我们可以很方便的进行切换。这里为演示,我们将默认的tomcat服务器切换成jetty服务器来做演示。(当然这4中服务器的切换流程都是一样的,所以只举例切换将tomcat服务器--jetty服务器)


一、默认tomcat服务器

当我们创建完SpringBoot项目导入web依赖后,在启动后会发现默认启动的是Tomcat服务器,如下图空色框内所示:

 

二、查看内置服务器种类

查看源码,找到四种内置服务器。(在autoconfigure下的web/embedded下面),会发现如下图所示的四种服务器分别是Jetty、Netty、Tomcat、Undertow服务器。还有一个配置服务器的条件类。

 我们查看配置服务器的条件类EmbeddedWebServerFactoryCustomizerAutoConfiguration代码。注:1.Conditional是条件判断,返回boolean值。如果为true才会执行该方法。

       2.下图的XXX.class是字节码文件。

也就是说如果有这样一个字节码文件才会去执行。

三、编写坐标 

根据上述的分析,我们只需要去编写坐标,springboot框架就会自动的去根据坐标判断是否有这样的字节码文件,从而导入相应的服务器。

我们也可查看依赖关系,如下图所示:默认就是tomcat,和我们运行的结果是一样的。所以我们现在要想切换服务器,1.必须现将Tomcat服务器排除掉,2.然后再去进行配置要切换的服务器。

 pom.xml代码:

<!-- web开发的起步依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!--将tomcat排除掉-->
    <exclusions>
          <exclusion>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-tomcat</artifactId>
          </exclusion>
    </exclusions>
</dependency>
<!--将服务器切换为jetty-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

 四、效果图

在启动SpringBoot项目后,在控制台查看服务器。可看到已经将tomcat切换为了jetty服务器。如下图所示:

 


总结

切换的代码就是更改pom.xml文件的web坐标,将tomcat排除掉后去配置其他服务器。但对于源码我们还是要去多多了解的,我们要练习看源码的能力。这样不管你知不知道,都能够去通过源码将内部的实现过程了解并且更改成你想要的信息。所以大家重在学习源码。了解其内部的实现是非常重要的。

2023年1月9日,我的粉丝数突破2000,很开心大家对我的支持。我会更加努力的创作出更加优秀的作品。大家一起学习一起进步。在这里谢谢大家的陪伴~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152010.html

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

相关文章

【Python】python深拷贝和浅拷贝(二)

【Python】python深拷贝和浅拷贝&#xff08;二&#xff09; 前言 上一期我们介绍了Python中深拷贝和浅拷贝的定义以及它们在执行过程中内存结构&#xff0c;同时也给出了深拷贝和浅拷贝的方法。&#xff08;没有看上一期的朋友看这里&#xff0c;python深拷贝和浅拷贝&#…

架构设计---性能设计的详解

前言&#xff1a; 系统性能是互联网应用最核心的非功能性架构目标&#xff0c;系统因为高并发访问引起的首要问题就是性能的问题&#xff0c;高并发访问的情况下&#xff0c;系统因为资源不足&#xff0c;处理每个请求的时间都会变慢&#xff0c;看起来就是性能的变差。 因此…

什么是随机森林?

什么是随机森林&#xff1f; 随机森林是一种有监督的机器学习算法。由于其准确性&#xff0c;简单性和灵活性&#xff0c;它已成为最常用的一种算法。事实上&#xff0c;它可以用于分类和回归任务&#xff0c;再加上其非线性特性&#xff0c;使其能够高度适应各种数据和情况。 …

JavaSE初阶篇:系统环境变量path|classpath|JAVA_HOME

环境变量是为了 “在命令行窗口下”编译和运行Java程序而配置一、系统变量&#xff1a;Pathpath环境变量作用&#xff1a;将命令所在的路径配置到path中去&#xff0c;就相当于在计算机中“注册”了一样&#xff0c;以后找这个命令&#xff0c;会直接去你配置的路径下寻找。达到…

Revit中怎么使两面墙拉近时不自动连接?柱断梁墙功能

一、Revit中怎么使两面墙拉近时不自动连接? 问题&#xff1a;同材质的墙体在同一条直线上只要将其端点拖拽至一起就会融合成一道整墙体(如图-1、2所示)&#xff0c;但是在做一些较特殊的结构时我们不需要其连接成一道整墙&#xff0c;有没有什么办法能够设置呢? 我们可以通过…

避免Mysql插入重复数据的几种方法

1、前言 在平时对数据库操作时&#xff0c;有时候需要向数据库中插入一些数据&#xff0c;此时就需要使用数据库的插入语句&#xff0c;但是在向数据中库插入数据时&#xff0c;不能盲目插入&#xff0c;因为盲目的插入可能会造成数据重复&#xff0c;浪费数据库的资源&#x…

Pytest三种配置文件

&#x1f60e;&#x1f60e;原文出自&#xff1a;测个der&#xff0c;博主的公众号&#xff0c;格式美观一些。 配置介绍 pytest 的主配置文件&#xff0c;可以改变 pytest 的默认行为&#xff0c;执行 pytest -h&#xff0c;这里有很多配置均可用于 pytest.ini配置 (venv) …

HarmonyOS鸿蒙学习笔记(16)Canvas入门使用

Canvas入门指南1、Canvas代码结构2、简单案例2.1 fillStyle和fillRect 绘制蓝色矩形2.2 strokeRect和strokeStyle 绘制红色边框2.3 lineCap的使用2.4 lineJoin的使用2.5 closePath的使用3、参考资料1、Canvas代码结构 在使用Canvas的时候&#xff0c;需要向初始化RenderingCon…

第四十七讲:IPv6基础知识

一、IPv6网络元素及概念 IPv6的网络元素如下图所示。 节点&#xff1a;任何运行IPv6的设备&#xff0c;包括路由器和主机&#xff08;甚至还将包括PDA、冰箱、电视等&#xff09;。邻节点&#xff1a;连接到同一链路上的节点。这是一个非常重要的概念&#xff0c;因为IPv6的邻…

JS面试题--this指向+面试题

this其他补充 内置函数的绑定思考 01_一些函数的this分析 // 1.setTimeout原理 // function hySetTimeout(fn, duration) { // fn.call(window) // }// hySetTimeout(function() { // console.log(this) // window // }, 3000)// setTimeout(function() { // console.l…

EEG论文阅读和分析:《Differential entropy feature for EEG-based emotion classification》

论文阅读《Differential entropy feature for EEG-based emotion classification》 论文的核心是提出差分熵作为特征&#xff0c;并且对差分差分熵和比例差分熵等特征进行对比研究。 算法流程步骤&#xff1a; 采样过程&#xff1a; A.预处理 根据受试者的压力反应&#xf…

零基础转行软件测试可行吗?

如今&#xff0c;随着人们对软件质量的要求越来越高&#xff0c;软件测试已经成为最热门的IT行业之一。不少非科班出身的转业者也纷纷开始观望这个行业&#xff0c;因此不少人会问&#xff0c;零基础转行软件测试有前途吗&#xff1f;答案显而易见&#xff0c;如果你想成为最炙…

【C语言】数据类型(基本类型、构造类型、类型转换)

⏰打卡&#xff1a;DAY1 &#x1f3c6;今日学习目标&#xff1a;数据类型&#xff08;基本类型、构造类型、类型转换&#xff09; ✨个人主页&#xff1a;颜颜yan_的个人主页 &#x1f389;专栏系列&#xff1a;从0开始学C语言 文章目录前言基本类型整型浮点型字符型构造类型数…

Mybatis学习——增删改(mysql8.0)

目录 一、配置文件 (一)添加mybatis依赖&#xff1a; (二)resources资源目录的配置 1.database.properties文件的设置 2.mybatis-config.xml文件的设置 二、引入原始类 三、DogDao接口&#xff0c;定义增删改功能 (一)单条数据增删改 1.新增 2.删除 3.修改 (二)多条…

Makefile详细教程

Makefile详细教程 我编写本指南是因为我永远无法完全理解 Makefile。 他们似乎充斥着隐藏的规则和深奥的符号&#xff0c;提出简单的问题并没有得到简单的答案。 为了解决这个问题&#xff0c;我花了几个周末的时间坐下来阅读所有关于 Makefile 的内容。 我已将最关键的知识浓…

【链表】leetcode206.反转链表(C/C++/Java/Js)

leetcode206.反转链表1 题目2 思路2.1 双指针法&#xff08;迭代&#xff09;2.2 递归法2.2.1 递归--从前往后翻转指针指向2.2.2 递归--从后往前翻转指针指向3 代码3.1 C版本&#xff08;迭代&#xff09;3.2 C版本&#xff08;迭代递归&#xff09;3.3 Java版本&#xff08;迭…

【OpenDDS开发指南V3.20】第十章:Java Bindings

介绍 OpenDDS提供JNI绑定。Java应用程序可以像C++应用程序一样使用完整的OpenDDS中间件。 有关入门的信息,包括先决条件和依赖项,请参阅$DDS_ROOT/java/INSTALL文件。 Java版本9和更高版本使用Java平台模块系统。要在这些Java版本中使用OpenDDS,请将MPC特性Java_pre_jpms…

QT Echarts 联动共享数据表图 使用详解

Echarts是百度的一款可视化界面开发的平台&#xff0c;里面的地图以及数据可视化内容十分丰富&#xff0c;适合用于一些大屏数据显示项目或者一些ui界面开发。每一个ECharts图表使用一个无边框的QWebView来展示&#xff0c;这样多个不同类型的ECharts图表就是多个封装不同类型E…

kettle 筛选数据 并根据关键字段去重 设计

文章目录前言kettle 筛选数据 并根据关键字段去重 设计实现:1、配置sqlite 数据库链接2、先从test表里抽取数据3、将表输入查询的数据插入到excel里4、将筛选出来的数据根据id去重5、插入本地excel6、ETL 整体效果:7、测试:前言 如果您觉得有用的话&#xff0c;记得给博主点个赞…

安全轻量化股票看盘盯盘软件需要实现的功能和基本要求是什么?

有很多投资者是上班族的&#xff0c;因此是不能无时无刻盯盘看盘的&#xff0c;那么为了解决这个问题就需要用上轻量化股票看盘盯盘软件&#xff0c;那么一个安全的轻量化股票看盘盯盘软件需要具备哪些功能和基本要求呢&#xff1f;接下来小编为大家分析分析&#xff01; 1.一定…