启动Spring Boot应用程序时,我正在通过Shell脚本传递端口。想知道如何在应用程序中获取正在运行的端口和系统ip地址以在日志文件中打印。
脚本: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port = 9890
答案 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 /系统/环境/所有传递的参数中获取所有属性