Spring boot - 如何获取正在运行的端口和IP地址[重复]
Posted
技术标签:
【中文标题】Spring boot - 如何获取正在运行的端口和IP地址[重复]【英文标题】:Spring boot - how to get running port and ip address [duplicate] 【发布时间】:2019-01-08 18:26:57 【问题描述】:我在启动 Spring Boot 应用程序时通过 shell 脚本传递端口。想知道如何获取应用程序中运行的端口和系统ip地址打印到日志文件中。
脚本: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9890
【问题讨论】:
你在哪里paasing正在运行的端口?它在脚本里面吗?最后,当你说想知道时,你想知道哪里?在您的应用程序内部还是外部? IP地址部分:***.com/questions/9481865/… 【参考方案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()
【讨论】:
请注意,OP 请求的是 JMX 端口,而不是@LocalServerPort
。
LocalServerPort 是一个魅力 :) 没有比这更容易的了。请记住,这仅从 Spring Boot 2.0.0 开始可用。 docs.spring.io/spring-boot/docs/current/api/org/springframework/…以上是关于Spring boot - 如何获取正在运行的端口和IP地址[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot - 如何在不使用 spring 注释的情况下在运行时获取端口
如何在运行时获取 SPRING Boot HOST 和 PORT 地址?
Spring Boot Test 无法使用 LocalServerPort 注释自动连接端口