SpringBoot2でのコンテナ構成
1. 概要
このクイックチュートリアルでは、Spring Boot2のEmbeddedServletContainerCustomizerとConfigurableEmbeddedServletContainerを置き換える方法を説明します。
これらのクラスは以前のバージョンのSpringBootの一部でしたが、SpringBoot2から削除されました。 もちろん、機能は、インターフェースWebServerFactoryCustomizerおよびクラスConfigurableServletWebServerFactory。を介して引き続き使用できます。
これらの使い方を見てみましょう。
2. SpringBoot2より前
まず、古いクラスとインターフェイスを使用し、置き換える必要がある構成を見てみましょう。
@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.setPort(8080);
container.setContextPath("");
}
}
ここでは、サーブレットコンテナのポートとコンテキストパスをカスタマイズしています。
これを実現する別の可能性は、Tomcatなどのコンテナタイプに ConfigurableEmbeddedServletContainer、のより具体的なサブクラスを使用することです。
@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
TomcatEmbeddedServletContainerFactory tomcatContainer =
(TomcatEmbeddedServletContainerFactory) container;
tomcatContainer.setPort(8080);
tomcatContainer.setContextPath("");
}
}
}
3. SpringBoot2にアップグレードする
Spring Boot 2では、 EmbeddedServletContainerCustomizerインターフェイスがWebServerFactoryCustomizerに置き換えられ、ConfigurableEmbeddedServletContainerクラスがConfigurableServletWebServerFactoryに置き換えられました。
Spring Boot2プロジェクトの前の例を書き直してみましょう。
public class CustomContainer implements
WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
public void customize(ConfigurableServletWebServerFactory factory) {
factory.setPort(8080);
factory.setContextPath("");
}
}
そして、2番目の例では TomcatServletWebServerFactory:を使用します。
@Component
public class CustomContainer implements
WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.setContextPath("");
factory.setPort(8080);
}
}
同様に、削除されたJettyEmbeddedServletContainerFactoryおよびUndertowEmbeddedServletContainerFactoryと同等のJettyServletWebServerFactoryおよびUndertowServletWebServerFactoryがあります。
4. 結論
この短い記事では、SpringBootアプリケーションをバージョン2.xにアップグレードするときに発生する可能性のある問題を修正する方法を示しました。
Spring Boot 2プロジェクトの例は、GitHubリポジトリにあります。