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

スプリングブート変更コンテキストパス

1. 概要

Spring Boot, by default,serves content on the root context path (“/”)

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

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

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=/example

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

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

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

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

2.3. OS環境変数

Spring BootはOS環境変数にも依存できます。 Unixベースのシステムでは、次のように記述できます。

$ export SERVER_SERVLET_CONTEXT_PATH=/example

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

> set SERVER_SERVLET_CONTEXT_PATH=/example

above environment variable is for Spring Boot 2.x.xIf we have 1.x.x、変数はSERVER_CONTEXT_PATHです。

2.4. コマンドライン引数

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

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

3. Java Configを使用する

次に、Beanファクトリに構成Beanを設定して、コンテキストパスを設定しましょう。

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

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

Spring Boot 1を使用すると、EmbeddedServletContainerCustomizerのインスタンスを作成できます。

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

4. 構成の優先順位

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

Spring Bootが効果的な構成を選択するために使用するpriority order in descending order,は次のとおりです。

  1. Java Config

  2. コマンドライン引数

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

  4. OS環境変数

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

  6. クラスパス内のapplication.propertiessrc/main/resourcesまたはパッケージ化されたjarファイル)

5. 結論

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