SpringBoot配置熱配置


springは開発者にspring-boot-devtoolsというモジュールを提供して、Spring Bootアプリケーションを熱展開をサポートし、開発者の開発効率を高め、Spring Bootアプリケーションを手動で再起動する必要がない。
devtoolsの原理
深層原理は二つのClass Loaderを使って、一つのクラスloaderはそれらの変えられないクラス(第三者Jarカバン)をロードして、もう一つのクラスClass Loaderはローディングして変更するクラスをローディングして、retart Class Loaderといいます。このようにコードが変更された時、もとのretart Class Loaderは捨てられて、もう一つのrestlass Loaderを作成します。だから、より速い再起動時間を実現しました。
pomを使うには以下の構成を追加する必要があります。
 <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-devtoolsartifactId>
        <optional>trueoptional>
    dependency>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
            <configuration>
                <fork>truefork>
            configuration>
        plugin>
    plugins>
build>
説明:
(1)devtoolsは、ページの熱的展開を実現することができます(つまり、ページ修正後すぐに有効になります。これは直接にappication.propertiesファイルにspring.thymelea.cache=falseを配置して実現します)。クラスファイルの熱い展開を実現します。すなわち、devtoolsは、classipathのファイルの変更を監督し、すぐにアプリケーションを再起動します。(保存タイミングで発生します。)注意:採用された仮想マシンのメカニズムのため、再起動はとても速い(2)配置後、javaファイルを修正してからも熱起動をサポートしますが、この方式はプロジェクトの再起動(速度が比較的速いプロジェクトの再起動)に属し、sessionの値が空になります。つまり、ユーザーがログインしたら、プロジェクトが再起動されたら再登録が必要です。
デフォルトでは、/META-INF/maven、/META-INF/resource、/static、/templates、/publicなどのファイル修正はアプリケーションを再起動しませんが、再ロードされます。
devtoolsの配置
appication.propertiesでは、以下のように構成されています。
spring.thymeleaf.cache=false
#     
spring.devtools.restart.enabled: true
#       
#spring.devtools.restart.additional-paths: src/main/java
#classpath    WEB-INF          
spring.devtools.restart.exclude: WEB-INF/**
IDEAプロファイル
Javaクラスを修正した後、IDEAはデフォルトでは自動的にコンパイルされません。spring-book-devtoolsはまたclaspathの下のファイルの変化を監視してからアプリケーションを再起動します。だからIDEAの自動コンパイルを設定する必要があります。
(1)File-Seetting s-Commpiler-Build Project atomatially
(2)ctrl+shift+alt+/、Registryを選択し、Compler atomake allow when ap runningにチェックを付ける
熱展開の変更クラスをテストします。保存:アプリケーションは設定ファイルの変更を再開します。保存:アプリケーションは変更ページを再起動します。保存:アプリケーションは再起動されませんが、再読み込みされます。ページは更新されます。