在 Spring Boot 中配置 Tomcat 监听多个端口

在现代微服务架构中,应用程序可能需要监听多个端口,以支持不同的服务或协议。Spring Boot 提供了灵活的配置选项,使得这一需求变得简单而高效。本文将介绍如何在 Spring Boot 中配置 Tomcat 以监听多个端口,并简要说明其中一些关键组件的作用。

代码实现

以下是一个示例配置类 MultiPortTomcatConfig,它允许 Tomcat 监听多个端口:

java 复制代码
@Configuration
public class MultiPortTomcatConfig {

    @Value("${server.configuredPorts:12307,12308,12309,12310,12311,12312}")
    private String configuredPorts;

    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        Connector[] additionalConnectors = this.createAdditionalConnectors();
        if (additionalConnectors != null && additionalConnectors.length > 0) {
            tomcat.addAdditionalTomcatConnectors(additionalConnectors);
        }
        return tomcat;
    }

    private Connector[] createAdditionalConnectors() {
        if (StringUtils.isBlank(this.configuredPorts)) {
            return null;
        }
        String[] ports = this.configuredPorts.split(",");
        List<Connector> result = new ArrayList<>();
        for (String port : ports) {
            Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
            connector.setScheme("http");
            connector.setPort(Integer.parseInt(port));
            result.add(connector);
        }
        return result.toArray(new Connector[0]);
    }
}
TomcatServletWebServerFactory:

这是一个 Spring Boot 提供的工厂类,用于创建嵌入式 Tomcat 服务器的实例。通过这个类,我们可以自定义 Tomcat 的行为。

Connector:

Tomcat 的连接器用于处理 HTTP 请求。在本例中,我们为每个配置的端口创建了一个连接器,并设置协议为 Http11NioProtocol,这是一种高效的 HTTP 处理方式。

createAdditionalConnectors:

该方法解析配置的端口字符串,并为每个端口创建一个 Connector 实例。最终返回一个连接器数组。

提醒:确保这个配置类被Spring扫描加载

相关推荐
无心水1 小时前
【OpenClaw:实战部署】5、全平台部署OpenClaw(Win/Mac/Linux/云服务器)——10分钟跑通第一个本地AI智能体
java·人工智能·ai·智能体·ai智能体·ai架构·openclaw
一只大袋鼠2 小时前
Redis 安装+基于短信验证码登录功能的完整实现
java·开发语言·数据库·redis·缓存·学习笔记
※DX3906※2 小时前
Java排序算法--全面详解面试中涉及的排序
java·开发语言·数据结构·面试·排序算法
cur1es3 小时前
【JVM类加载&双亲委派模型&垃圾回收机制】
java·jvm·gc·垃圾回收·类加载·双亲委派模型
Mr.朱鹏4 小时前
JVM-GC垃圾回收案例
java·jvm·spring boot·算法·spring·spring cloud·java-ee
焦糖玛奇朵婷4 小时前
实测扭蛋机小程序:开发简单,互动有趣
java·大数据·程序人生·小程序·软件需求
Nan_Shu_6144 小时前
学习: 尚硅谷Java项目之小谷充电宝(3)
java·后端·学习
wzqllwy4 小时前
8 大经典排序算法(Java 实现):原理 + Demo + 核心分析
java·算法·排序算法
智能工业品检测-奇妙智能4 小时前
AIFlowy如何实现与现有Spring Boot项目的无缝集成?
java·spring boot·后端
從南走到北4 小时前
JAVA无人共享无人健身房物联网结合系统源码支持小程序+公众号+APP+H5
java·物联网·小程序