Spring Boot 获取服务IP地址和端口号

4,025

业务场景

需要在业务逻辑中查询自身的IP和端口号, 构成服务URL

方案

IP地址

IP地址非常简单, 直接上代码:

try {
    String result = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
    LOGGER.error("获取IP失败", e);
}

端口号

获取端口号有四种方式:

  • @Value注解
  • @LocalServerPort注解
  • Environment

我们将@Value和@LocalServerPort放在一起, 其实@LocalServerPort等价于@Value("${local.server.port}"):

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

@LocalServerPort
int localServerPort

这里要特别注意, 如果没有在配置文件中配置local.server.port, @LocalServerPort会为null

Environment本质和上述方法类似, 用它来读取配置属性:

@Autowired
Environment environment;

public int getPort() {
    return environment.getProperty("server.port");
}

总结

本质还是去获取配置文件中的属性, 要注意local.server.port和server.port不同