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

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

文章目录

  • [十四,在Spring Boot当中对应" Tomcat 服务器的相关配置"和"服务器的切换"的详细说明](#十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明)
  • [1. 基本介绍](#1. 基本介绍)
  • [2. 准备工作:](#2. 准备工作:)
  • [3. 内置 Tomcat 的配置](#3. 内置 Tomcat 的配置)
    • [3.1 第一种方式:通过 application.yaml 完成对 Tomcat 的配置](#3.1 第一种方式:通过 application.yaml 完成对 Tomcat 的配置)
    • [3.2 第二种方式:通过类来配置 Tomcat 服务器 / 容器](#3.2 第二种方式:通过类来配置 Tomcat 服务器 / 容器)
  • [4. 切换Spring Boot 使用的服务器(这里切换为 Undertow)](#4. 切换Spring Boot 使用的服务器(这里切换为 Undertow))
  • [5. 最后:](#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 复制代码
<?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 才行的。

yaml 复制代码
spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 50MB
server:
  # 配置端口
  port: 999
  tomcat: # 对 tomcat 的配置
    threads:
      max: 10 # 最大的工作线程,默认是 2000
      min-spare: 5 # 最小工作线程,默认是10
    accept-count: 200 # tomcat 启动的线程达到最大值,接受排队的请求个数,默认是100
    max-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> {

    @Override
    public 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 服务器,我们可以使用如下:

xml 复制代码
 <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重新加载,然后运行测试。

xml 复制代码
<!--        引入 undertow 容器/服务器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
    </dependencies>

完整的 pom.xml 文件的配置 编写:

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. 最后:

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

相关推荐
_Power_Y1 小时前
JavaSE:11、内部类
java·开发语言
小张同学(恩师白云)2 小时前
SpringDataJPA基础增删改查
java·数据库
尘浮生2 小时前
Java项目实战II基于Spring Boot的宠物商城网站设计与实现
java·开发语言·spring boot·后端·spring·maven·intellij-idea
Grey Zeng2 小时前
Java SE 23 新增特性
java·jdk·jdk新特性·jdk23
勤奋的小王同学~3 小时前
怎么修改mvn的java版本
java·开发语言
越过难题3 小时前
若依的使用
java
doc_wei3 小时前
Java小区物业管理系统
java·开发语言·spring boot·spring·毕业设计·课程设计·毕设
荆州克莱3 小时前
杨敏博士:基于法律大模型的智能法律系统
spring boot·spring·spring cloud·css3·技术
生产队队长3 小时前
SpringBoot2:web开发常用功能实现及原理解析-@ControllerAdvice实现全局异常统一处理
java·spring boot
一知半解搞开发3 小时前
Mysql系列-索引简介
java·数据库·mysql