私はSpring Bootを使用しており、EmbeddedServletContainerCustomizer
を初期化するBeanを持っています。私は、ユーザーがポートとIPアドレスを提供するプロパティーファイルを持っています(したがって、ポートはSpringブートが使用するデフォルトではないため、EmbeddedServletContainerCustomizer
が必要です)。このBeanを初期化する前に、アドレスとポートの組み合わせがすでに使用されているかどうかをテストするにはどうすればよいですか?このBeanの内部にServerSocket
を作成することができません。私は、この例外をキャッチしてログに記録するための優雅なやり方を望みます。 port/ipの組み合わせが使用されている場合、Springはスタックトレースでシャットダウンします。Beanを初期化する前にポートが使用中かどうかを確認するテスト
@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 を使用することができますか?単に 'server.port'を設定するか、' server.port = $ {your.property:8080} 'を追加して、 'server.port'をあなたの値に置き換えるか、あるいは' 8080'を設定しないでください)。したがって、カスタマイザは必要ありません。また、ポートを検出する代わりに、このケースのために 'FailureAnalyzer'を書くことを提案します(そして、私はすでにこのケースのために1つあると信じています)。 –