Java Spring boot-如何获取正在运行的端口和ip地址

Java Spring boot-如何获取正在运行的端口和ip地址,java,spring,spring-boot,Java,Spring,Spring Boot,在启动spring启动应用程序时,我通过shell脚本传递端口。想知道如何在日志文件中获取要打印的应用程序中的运行端口和系统ip地址 脚本: -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=9890如果您想在应用程序运行后获取它,请尝试以下操作: @Component public class ApplicationLoader implements ApplicationRunner { @Autow

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

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

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

@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;


您可以按以下方式自动关联任何组件类中的端口号

// Inject which port we were assigned
@Value("${local.server.port}")
int port;
或者使用注释
@LocalServerPort

@LocalServerPort
private int port;
和主机地址,包括以下内容

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

当您从脚本中传递任何参数时,您可以在运行时获得:

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
}
或通过:

@LocalServerPort
private int serverPort;
@Autowired
private Environment environment;

public void doWork(){
    String serverPort = environment.getProperty("local.server.port");
    // do something
}
您还可以从Environment-JVM/system/Environment/all-passed-arguments获取所有属性


你在哪里安装运行端口?是在脚本里面吗?最后,当你说想知道的时候,你想知道在哪里?在应用程序内部还是外部?对于IP地址部分:
getLoopbackAddress()
可能不是人们想要的。也许,“和系统IP地址”-这里的意思是什么?在最新的spring引导中,它是${server.port}注意,OP请求的是JMX端口,这不是
@LocalServerPort
。LocalServerPort是一个魅力:)没有什么比这更容易的了。请记住,这仅适用于Spring Boot 2.0.0以后的版本。