English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot DevTools

Spring Boot DevTools

Spring Boot 1.3Spring Boot DevToolsと呼ばれる別のモジュールを提供しています。DevToolsは Developer Tool このモジュールの目的は、Spring Bootアプリケーションを使用する際に開発時間を短縮することです。Spring Boot DevToolsは変更を受け入れ、アプリケーションを再起動します。

プロジェクトにDevToolsを実装するために、pom.xmlファイルに以下の依存関係を追加することができます。

<dependency>
<groupId>org.springframework.boot</groupId>/<groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime<scope >
</dependency>

Spring Boot DevToolsの機能

Spring Boot DevToolsは以下の機能を提供します:

属性のデフォルト値 自動再起動 LiveReload リモートデバッグトンネル リモート更新と再起動

属性のデフォルト値: : Spring Bootはテンプレート技術を提供しています。 Thymeleaf に含まれています。 spring.thymeleaf.cache。キャッシュし、アプリケーションを再起動しないでページを更新することができます。しかし、開発中にこれらの属性を設定することは常に問題をもたらします。

私たちはspringを使用しています-boot-devtoolsモジュールを使用する場合、属性を設定する必要はありません。Thymeleaf、Freemarker、Groovyテンプレートの開発キャッシュ中に自動的に無効になります。

自動リフレッシュ。 アプリケーションに属性のデフォルト値を適用したくない場合、application.propertiesファイルでconfigprop: spring.devtools.addを設定できます。-properties []をfalseに設定します。

自動再起動: 自動再起動とは、Javaクラスを再ロードし、サーバー側で構成することを意味します。サーバー側の変更後、それは動的にデプロイされ、サーバーが再起動し、変更されたコードをロードします。これは主にマイクロサービスベースのアプリケーションに使用されます。Spring Bootは、 二種類タイプのClassLoader:

変更されないクラス(三分之二)は、基本的ClassLoaderにロードされました。 私たちが積極的に開発しているクラスは、再起動ClassLoader中。

アプリケーションが再起動したとき、再起動されたClassLoaderは捨てられ、新しいクラスが充填されます。したがって、基本的なClassLoaderは常に利用可能で充填されています。

属性を使用して、 spring.devtools.restart.enabled 設定します サーバーの自動再起動を無効にするために、エラー。

思い出してください:

DevToolsは常にクラスパスリソースを監視しています。 再起動をトリガーする唯一の方法は、クラスパスを更新することです。 DevToolsは正常に動作するために独立したアプリケーションクラスローダーが必要です。デフォルトでは、Mavenが派生したアプリケーションプロセスです。 自動再起動は、 LiveReloadと非常に良い結果が出ました。 DevToolsは、再起動中にそれを閉じるためにアプリケーションコンテキストの閉じるハンガーに依存しています。

LiveReload: を含んでいます。 Spring Boot DevToolsモジュールには、LiveReloadのエンブリードドサーバーと呼ばれます。 、変更を行う限り、アプリケーションはブラウザの自動リフレッシュを自動的にトリガーします。リソース。これはまた、

自動リフレッシュ。 注意: 属性を設定します。spring.devtools.livereloadを設定することで、LiveReloadを無効にできます。有効にするには、 false。

それがChrome、Firefox、Safari用のブラウザエクステンションを提供します。デフォルトでは、LiveReloadが有効です。LiveReloadは以下のパスで動作します:

/META-INF/maven /META-INF/resources /リソース /静的 /public /テンプレート

ブラウザ内の自動再起動を無効にするために、上記のパスを除外することもできます。例えば、

spring.devtools.restart.exclude=public/**, static/**, templates/**

属性を使用して、 spring.devtools.restart.additional-pathsを確認して、他の追加パスを表示します。例えば、

spring.devtools.restart.additional-paths=/path-to-folder

他のパスを除外し、デフォルトのパスを保持したい場合は、属性を使用してください spring.devtools.restart.additional-exclude。例えば、

spring.devtools.restart.additional-exclude=styles/**

思い出してください

一度に1台のLiveReloadサーバーを実行できます。 アプリケーションを起動する前に、他のLiveReloadサーバーが実行されていないことを確認してください。 IDEから複数のアプリケーションを起動する場合、LiveReloadは最初のもののみをサポートします。

リモートデバッグトンネル: Spring BootはJDWP(Javaデバッグラインプロトコル)をHTTPを通じて直接アプリケーションにトンネルし、アプリケーションをポートのみ公開されているサーバーにデプロイすることもできます。80と443のインターネットクラウドプロバイダー。

リモート更新および再起動: DevToolsが提供するもう一つのトリックは、リモートアプリケーションをサポートしていることです: 更新および 再起動。それがローカルのクラスパス内のファイルの変更を監視し、それをリモートサーバーにプッシュして再起動します。また、この機能をLiveReloadと組み合わせることもできます。

トリガーファイルを使用することができます。

頻繁な再起動により、自動再起動は時々開発時間を遅らせることがあります。この問題を解決するために、 トリガーファイル。SpringBootはトリガーファイルを監視し、そのファイルの変更を検出します。それにより、サーバーを再起動し、すべての前の変更を再読み込みします。

属性を追加することで、 spring.devtools.restart.trigger-fileは、我々のアプリケーションでファイルのトリガーを実現しています。内部か外部かです。例えば、

spring.devtools.restart.trigger-file=c:/workspace-sts-3.9.9.RELEASE/restart-trigger.txt

Spring Boot DevTools例

ステップ1: 使用Spring Initializr https://start.spring.io/。

ステップ2: 提供 グループ名前と アーティファクト ID。私たちは以下を提供しています com.w3codebox およびアーティファクトID spring-boot-devtools-example。

ステップ3: 以下の依存関係を追加します: spring-boot-starter-web および spring-boot-devtools

ステップ4: クリック 生成ボタン。それはプロジェクトの Jar ファイル。

ステップ5: Jarファイルを抽出します。

ステップ6: フォルダーをSTSにインポートします。

ファイル-インポート-既存のMavenプロジェクト-参照-springを選択する-boot-devtools-example-完了

インポートが成功すると、STSのPackage Explorer部分で以下のディレクトリが見られます。

ステップ7: 開く SpringBootDevtoolsExampleApplication.java それをJavaアプリケーションとして実行します。

それから、アプリケーションで変更を行います(ファイルやコードの編集または削除)、変更を保存します。変更を保存すると、サーバーが再起動し、変更を取得します。