LoginSignup
22
21

More than 5 years have passed since last update.

Spring Boot devtoolsのAutomatic restartについて

Last updated at Posted at 2016-10-12

概要

Spring Bootで開発するアプリケーションにspring-boot-devtoolsを組み込むと、開発が便利になる機能が有効になります。そのうちの1つである"Automatic restart"の設定についてまとめました。

環境

  • Windows10 Professional
  • Java 1.8.0_101
  • Spring Boot 1.4.1
    • spring-boot-devtools

参考

Property defaults

devtoolsの初期設定に関するクラス

Automatic restart

spring boot devtoolsを組み込むと有効になります。
デフォルトではクラスパス上のファイルの変更をトリガーにしてアプリケーションが再起動します。

トリガーの有効/無効の切り替え

デフォルトはtrueです。

spring:
  devtools:
    restart:
      enabled: true

トリガーの対象外について(デフォルト)

デフォルトはDevToolsPropertiesで定義されています。
ここで定義されているパターンに当てはまるファイルは再起動のトリガーにはなりません。

spring:
  devtools:
    restart:
      exclude: <DevToolsPropertiesを参照>

トリガーの対象から除外する(追加)

デフォルトは未指定です。
再起動のトリガーの対象から除外したいパターンを追加したい場合に指定します。
複数ある場合はカンマ区切りで指定します。
この例では*.yml、*.xmlを指定しているので、例えばapplication.ymlを修正してもアプリケーションは再起動しなくなります。

spring:
  devtools:
    restart:
      additional-exclude: "**/*.yml, **/*.xml"

トリガーの対象に含める

デフォルトは未指定です。
クラスパス以外のファイルで、再起動のトリガーの対象に含めたいディレクトリを指定します。
複数ある場合は行頭に-を付けて配列で指定します。

spring:
  devtools:
    restart:
      additional-paths:
        - src/main/resources/sql

トリガーを特定のファイルに指定する

spring boot devtoolsのデフォルトの状態では、ちょっとした修正を行っただけでもアプリケーションが再起動してしまい、逆に開発を非効率にする場合があります。このような場合には、再起動のトリガーをクラスパス上のファイルではなく特定のファイルに変えることができます。

デフォルトは未指定です。
再起動のトリガーを任意のファイルに指定します。この例では.reloadtriggerというファイルを指定しています。
このファイルをクラスパス上(src/main/resources)に配置し、再起動したい場合にこのファイルを変更するとアプリケーションが再起動します。

spring:
  devtools:
    restart:
      trigger-file: .reloadtrigger

注意点

  • クラスパス上のファイルの変更が無ければトリガーファイルを更新しても再起動しません。
  • トリガーファイルはクラスパス上に配置します。クラスパス以外にある場合はadditional-pathsで追加します。
  • トリガーファイルの変更はIDE上から行わないと検知されないようです。コンソールからファイルを更新しても再起動しませんでした。

Global settings

spring boot devtoolsの設定は、アプリケーションの設定ファイル(application.properties or yml)に記述しますが、開発者個人の設定を反映させたい場合があると思います。
このような場合は、ユーザーホームディレクトリ下に.spring-boot-devtools.propertiesというファイルを作成し、開発者個人の設定を記述することで、反映させることができます。

たとえば

application.properties上では再起動が有効になっているが、個人の環境では無効にしたい場合

spring.devtools.restart.enabled = false

application.properties上ではクラスパス上のファイルがトリガーになっているが、任意のファイルをトリガーにしたい場合

spring.devtools.reload.additional-paths = C:/path/to/directory
spring.devtools.reload.trigger-file = mytrigger

注意点

  • .spring-boot-devtools.ymlというyaml形式では認識されませんでした。
22
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
21