前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot项目启动(监听)多个端口

SpringBoot项目启动(监听)多个端口

作者头像
玖柒的小窝
修改2021-09-14 14:43:34
2.9K0
修改2021-09-14 14:43:34
举报
文章被收录于专栏:各类技术文章~

0.背景

在最开始时,我们指明:

代码语言:javascript
复制
server.port = 9595

这样,springboot程序启动后就会监听9595端口.

但是,碰到一些特殊情场景时,需要加新的监听端口?

1.配置文件中声明要增加的端口

代码语言:javascript
复制
# 用,分割,末尾没有点哈
server.additionalPorts: 2080,2022

2.编写配置类

代码语言:javascript
复制
package com.xx;

import org.apache.catalina.connector.Connector;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 增加端口监听
 * @Class: TomcatConfig
 * @Author: Yiang37
 * @Date: 2021/9/3 15:56
 * @Version: 1.0
 */
@Configuration
public class TomcatConfig {

    @Value("${server.additionalPorts}")
    private String additionalPorts;

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

    private Connector[] additionalConnector() {
        if (StringUtils.isBlank(this.additionalPorts)) {
            return null;
        }
        // 端口按,分割
        String[] ports = this.additionalPorts.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[] {});
    }

}

3.启动时声明上面的配置类

代码语言:javascript
复制
package com.xx;

import com.xx.TomcatConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;

// 增加端口监听
@Import({TomcatConfig.class})
@SpringBootApplication
@Slf4j
public class WkgApplication {
    public static void main(String[] args) {
        SpringApplication.run(WkgApplication.class, args);
        log.info("\n-------------------------------------------------\n" +
                "xx run success...\n" +
                "-------------------------------------------------");
    }
}

4.启动项目即可看到新端口被监听

image-20210909200153518
image-20210909200153518

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.背景
  • 1.配置文件中声明要增加的端口
  • 2.编写配置类
  • 3.启动时声明上面的配置类
  • 4.启动项目即可看到新端口被监听
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档