SpringBoot修改内置tomcat版本

您所在的位置:网站首页 springboot修改端口号不生效 SpringBoot修改内置tomcat版本

SpringBoot修改内置tomcat版本

2023-08-15 07:42| 来源: 网络整理| 查看: 265

前言:生产环境使用的外部部署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

    ①:9.0.45

    ②:添加依赖。

org.apache.tomcat.embed tomcat-embed-core ${tomcat.version}

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

三、总结说明

     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 { @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接口的扩展

spring.factories的作用参考如下:

spring.factories文件的作用_着力的博客-CSDN博客_spring.factories

@Import注解作用参考如下:

Spring全解系列 - @Import注解 - 知乎​​​​​​​



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3