SpringBoot修改内置tomcat版本的操作步骤

 更新时间:2024年07月23日 10:25:57   作者:大道之简  
生产环境使用的外部部署Tomcat还是内置Tomcat由于版本安全漏洞,往往需要升级到指定的安全版本,本文演示一下SpringBoot升级内置的Tomcat版本,感兴趣的小伙伴跟着小编一起来看看吧

一、查看当前SpringBoot内置Tomcat版本信息.【本文SpringBoot的版本为2.3.4.RELEASE】

1、查看SpringBoot的启动项目版本.

spring-boot-starter-web依赖spring-boot-starter-tomcat.

tomcat-embed-core依赖版本信息.

二、查看SpringBoot内置tomcat版本的支持范围.

1、Maven的官方仓库中查看.

仓库地址

2、这里升级到9.0.45

①:<tomcat.version>9.0.45</tomcat.version>

②:添加依赖。

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>${tomcat.version}</version>
        </dependency>

启动服务查看,测试项目功能

三、总结说明

1、SpringBoot内置Tomcat,每个版本会有一个对应的版本范围的,根据业务以及安全需求进行升级,如果需要更高版本,直接升级SpringBoot的版本也更加合适,注意一定要多在测试环境测试项目功能,一些配置属性过期、Maven冲突等,本文适用于指定SpringBoot然后小氛围微调内置Tomcat版本。

附录

SpringBoot下Tomcat开启Nio2协议,SpringBoot支持Nio/Nio2/Http2

org.apache.coyote.http11

package com.boot.skywalk.config;
 
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.ProtocolHandler;
import org.apache.coyote.http11.AbstractHttp11Protocol;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;
 
/**
 * 开启Tomcat下nio2配置配置
 */
 
@Slf4j
@Component
public class CommonTomcatConnectorCustomizer implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
    @Override
    public void customize(ConfigurableServletWebServerFactory factory) {
        ((TomcatServletWebServerFactory) factory).setProtocol("org.apache.coyote.http11.Http11Nio2Protocol");
        ((TomcatServletWebServerFactory) factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                ProtocolHandler protocol = connector.getProtocolHandler();
                log.info("Tomcat({})  -- MaxConnection:{};MaxThreads:{};MinSpareThreads:{}", //
                        protocol.getClass().getName(), //
                        ((AbstractHttp11Protocol<?>) protocol).getMaxConnections(), //
                        ((AbstractHttp11Protocol<?>) protocol).getMaxThreads(), //
                        ((AbstractHttp11Protocol<?>) protocol).getMinSpareThreads());
            }
        });
    }
}

访问运行:协议转换为Nio2.

 SpringBoot多域名支持访问,本地如果做个简单测试,就在一下文件里面做个配置.

C:\Windows\System32\drivers\etc

 然后修改SpringBoot下为80端口,etc中无法绑定具体端口.

server:
  port: 80

验证SpringBoot中properties、yaml、yml的优先级,取值时读取配置文件的顺序为:properties->yaml->yml。

配置内容生效顺序:

properties > yaml > yml

 加载顺序:

yml > yaml > properties 

测试配置文件如下: 

最终生效是properties的内容

源码层面解释:

ConfigFileApplicationListener

从加载路径拼接出完整的配置文件然后进行加载.

默认加载外部Bean. 

PropertySourceLoader接口的扩展

以上就是SpringBoot修改内置tomcat版本的操作步骤的详细内容,更多关于SpringBoot修改tomcat版本的资料请关注脚本之家其它相关文章!

相关文章

  • Spring源码解析容器初始化构造方法

    Spring源码解析容器初始化构造方法

    这篇文章主要介绍了Spring源码解析容器初始化构造方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • 一文详解Java中Stream流的使用

    一文详解Java中Stream流的使用

    JDK8新增了Stream(流操作)处理集合的数据,可执行查找、过滤和映射数据等操作.本文将通过一些实例介绍stream流的使用,需要的可以参考一下
    2022-05-05
  • Java 数据库连接池DBPool 介绍

    Java 数据库连接池DBPool 介绍

    这篇文章主要给大家分享了Java 数据库连接池DBPool 介绍,<BR>DBPool是一个高效的易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池使你能够开发一个满足自已需求的数据库连接池,下面一起来看看文章内容的详细介绍吧,需要的朋友可以参考一下
    2021-11-11
  • SpringBoot+Redis执行lua脚本的方法步骤

    SpringBoot+Redis执行lua脚本的方法步骤

    这篇文章主要介绍了SpringBoot+Redis执行lua脚本的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Java超详细讲解接口的实现与用法

    Java超详细讲解接口的实现与用法

    Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为
    2022-04-04
  • Java多线程之Disruptor入门

    Java多线程之Disruptor入门

    这篇文章主要介绍了Java多线程之Disruptor入门,文中有非常详细的代码示例,对正在学习java多线程的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java 配置log4j日志文件路径 (附-获取当前类路径的多种操作)

    Java 配置log4j日志文件路径 (附-获取当前类路径的多种操作)

    这篇文章主要介绍了Java 配置log4j日志文件路径 (附-获取当前类路径的多种操作),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • SpringBoot记录Http请求日志的方法

    SpringBoot记录Http请求日志的方法

    这篇文章主要介绍了SpringBoot记录Http请求日志的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • SpringCloud+Redis实现Api接口限流防止恶意刷接口

    SpringCloud+Redis实现Api接口限流防止恶意刷接口

    接口限流是为了保护系统和服务,防止因为过多的请求而崩溃,本文主要介绍了SpringCloud+Redis实现Api接口限流防止恶意刷接口,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • java如何将list中的某个元素移动位置

    java如何将list中的某个元素移动位置

    在Java编程中我们经常会使用List数据结构来存储一组元素,下面这篇文章主要给大家介绍了关于java如何将list中的某个元素移动位置的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05

最新评论