Spring Bootのコンテキストパス変更

1概要

  • Spring Boot、デフォルトでは、 はルートコンテキストパス( "/")** でコンテンツを提供します。

また、通常は設定よりも規約を優先することをお勧めしますが、カスタムパスを使用したい場合もあります。

このクイックチュートリアルでは、さまざまな設定方法について説明します。

2プロパティを設定する

他の多くの設定オプションと同様に、Spring Bootのコンテキストパスはプロパティ、つまり server.servlet.context-path を設定することで変更できます。

これはSpring Boot 2.xでは機能することに注意してください。

Boot 1.xの場合、このプロパティは server.context-path です。

このプロパティを設定する方法は複数あります。これらを1つずつ見てみましょう。

2.1. application.properties / yml を使用する

コンテキストパスを変更する最も簡単な方法は、 application.properties / yml ファイルでプロパティを設定することです。

server.servlet.context-path=/baeldung

プロパティファイルを src/main/resources に置く代わりに、(クラスパスの外側の)現在の作業ディレクトリに保存することもできます。

2.2. Javaシステムプロパティ

コンテキストが初期化される前に、コンテキストパスをJavaシステムプロパティとして設定することもできます。

public static void main(String[]args) {
    System.setProperty("server.servlet.context-path", "/baeldung");
    SpringApplication.run(Application.class, args);
}

2.3. OS環境変数

Spring BootはOSの環境変数にも頼ることができます。 Unixベースのシステムでは、次のように書くことができます。

$ export SERVER__SERVLET__CONTEXT__PATH=/baeldung

Windowsでは、環境変数を設定するためのコマンドは次のとおりです。

> set SERVER__SERVLET__CONTEXT__PATH=/baeldung
  • 上記の環境変数はSpring Boot 2.x.x ** 用です。

2.4. コマンドライン引数

コマンドライン引数でプロパティを動的に設定することもできます。

$ java -jar app.jar --server.servlet.context-path=/baeldung

3 Java Config を使う

それでは、Beanファクトリに設定Beanを追加してコンテキストパスを設定しましょう。

Spring Boot 2では、 WebServerFactoryCustomizer を使用できます。

@Bean
public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>
  webServerFactoryCustomizer() {
    return factory -> factory.setContextPath("/baeldung");
}

Spring Boot 1では、 EmbeddedServletContainerCustomizer のインスタンスを作成できます。

@Bean
public EmbeddedServletContainerCustomizer
  embeddedServletContainerCustomizer() {
    return container -> container.setContextPath("/baeldung");
}

4設定の優先順位

この多くのオプションを使用すると、同じプロパティに対して複数の構成を持つことになります。

これは、https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html[優先順位]の降順になっています。効果的な構成:

  1. Java Config

  2. コマンドライン引数

  3. Javaシステムのプロパティ

  4. OS環境変数

  5. 現在のディレクトリ内の application.properties

  6. クラスパス内の application.properties src/main/resources または

パッケージ化されたjarファイル)

5結論

この記事では、Spring Bootアプリケーションでコンテキストパスやその他の設定プロパティを設定するさまざまな方法について簡単に説明しました。