Spring Boot程序获取tomcat启动端口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/russle/article/details/82563399

有时我们需要Spring Boot程序的启动端口,例如我们在代码中需要拼接改程序的监控检查URL,就会需要用到端口, 那么如何获取tomcat的端口?
办法有很多,实现ApplicationListener接口,通过WebServerInitializedEvent(Spring Boot 2.0.x版本) 或者EmbeddedServletContainerInitializedEvent(Spring Boot 1.5.x版本), 以及最简单的方式—读取属性文件。

方法一 实现ApplicationListener接口
直接看代码

package com.yq.config;


import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class ServerConfig implements ApplicationListener<WebServerInitializedEvent> {

    private int serverPort;

    public int getPort() {
        return this.serverPort;
    }

    @Override
    public void onApplicationEvent(WebServerInitializedEvent event) {
        this.serverPort = event.getWebServer().getPort();
        log.info("Get WebServer port {}", serverPort);
    }
}

////for 1.5.x  Spring Boot
//public class ServerConfig implements ApplicationListener<EmbeddedServletContainerInitializedEvent> {
//    private int serverPort;;
//
//    public int getPort() {
//        return this.serverPort;
//    }
//
//    @Override
//    public void onApplicationEvent(EmbeddedServletContainerInitializedEvent event) {
//        this.serverPort = event.getEmbeddedServletContainer().getPort();
//    }
//}

方法二, 读取配置文件属性
首先我们在application.properties中设置端口server.port=6061 ,如果不设置默认是8080. 其次我们在config类中读取,并设置默认值(如果application.properties没有设置就使用默认值)

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

/**
 * Simple to Introduction
 * className: MyConfig
 *
 * @author EricYang
 * @version 2018/9/9 22:17
 */
@Data
@Configuration
public class MyConfig {
    @Value("${server.port:8080}")
    private int port;
}

完整的代码在这里

截图
这里写图片描述

参考文献:
1, https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-application-events-and-listeners

猜你喜欢

转载自blog.csdn.net/russle/article/details/82563399