【问题标题】:Spring boot - how to get running port and ip address [duplicate]Spring boot - 如何获取正在运行的端口和IP地址[重复]
【发布时间】:2019-01-08 18:26:57
【问题描述】:

我在启动 Spring Boot 应用程序时通过 shell 脚本传递端口。想知道如何获取应用程序中运行的端口和系统ip地址打印到日志文件中。

脚本: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9890

【问题讨论】:

  • 你在哪里paasing正在运行的端口?它在脚本里面吗?最后,当你说想知道时,你想知道哪里?在您的应用程序内部还是外部?

标签: java spring spring-boot


【解决方案1】:

当你从脚本传递任何参数时,你可以在运行时得到这个:

private String jmxRemote = System.getProperty("com.sun.management.jmxremote"); 
private String jmxRemotePort = System.getProperty("com.sun.management.jmxremote.port");

获取 JVM 本身或您可能拥有的任何 -D 选项的属性 在命令行传递

获取ip:

// for example 127.0.0.1 is localhost ip
private String ip = InetAddress.getLoopbackAddress().getHostAddress();

获取端口:

@Value("${local.server.port}")
private int serverPort;

或通过:

@LocalServerPort
private int serverPort;

或通过:

@Autowired
private Environment environment;

public void doWork(){
    String serverPort = environment.getProperty("local.server.port");
    // do something
}

您还可以从环境中获取所有属性 - JVM / 系统 / 环境 / 所有传递的参数

【讨论】:

  • getLoopbackAddress() 可能不是人们想要的。
  • 也许,“和系统IP地址”——这里是什么意思?
  • 在最新的 spring-boot 中是 ${server.port}
【解决方案2】:

如果您想在应用程序运行后获取它,请尝试以下操作:

@Component
public class ApplicationLoader implements ApplicationRunner {

    @Autowired
    private Environment environment;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println(environment.getProperty("java.rmi.server.hostname"));
        System.out.println(environment.getProperty("local.server.port"));
        System.out.println(InetAddress.getLocalHost().getHostAddress());
    }
}

您可以通过多种方式获取端口:

@Value("${local.server.port}")
private int serverPort;

@LocalServerPort
private int serverPort;

【讨论】:

    【解决方案3】:

    您可以通过以下方式在任何组件类中自动连接端口号

    // Inject which port we were assigned
    @Value("${local.server.port}")
    int port;
    

    或者用注解@LocalServerPort

    @LocalServerPort
    private int port;
    

    主机地址如下

    String ip = InetAddress.getLocalHost().getHostAddress()
    

    【讨论】:

    猜你喜欢
    • 2015-07-30
    • 2014-12-01
    • 2020-03-17
    • 2016-12-19
    • 2014-12-29
    • 1970-01-01
    • 2018-08-09
    • 2012-11-16
    • 1970-01-01
    相关资源
    最近更新 更多