Spring Boot-如何获取运行端口和IP地址

时间:2018-08-01 08:43:57

标签: java spring spring-boot

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

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

3 个答案:

答案 0 :(得分:4)

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

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

或带有注释@LocalServerPort

@LocalServerPort
private int port;

以及以下主机地址

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

答案 1 :(得分: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;

答案 2 :(得分: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 /系统/环境/所有传递的参数中获取所有属性