业务场景
需要在业务逻辑中查询自身的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不同