我正在使用 Spring Boot,并且有一个初始化EmbeddedServletContainerCustomizer
的 bean。我有一个属性文件,用户在其中提供了要绑定的端口和 IP 地址(因此需要EmbeddedServletContainerCustomizer
,因为该端口不是 Spring 引导使用的默认值(。在初始化此 Bean 之前,如何测试地址和端口组合是否已在使用中?我无法在这个豆子内创建一个ServerSocket
。我希望有一种优雅的方式来捕获此异常并记录它。在使用端口/IP 组合的情况下,Spring 将使用堆栈跟踪关闭。
@Bean
public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() throws UnknownHostException {
EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer = null;
embeddedServletContainerCustomizer = new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.setPort(port);
container.setAddress(inetAddress);
}
};
return embeddedServletContainerCustomizer;
}
您可以使用Spring SocketUtils 例如
SocketUtils.findAvailableTcpPort(startRange, endRange);