JRebelクイックスタート

前回の記事では、JRebelとその用途について少し説明しました。 ここで、JRebelの使用方法をステップごとに説明します。



例えば、ソースコードがGitHubにあるPetclinicアプリケーションを見てください 。 私はお気に入りのIntelliJIDEAをIDEとして使用します。





準備する



JRebel4IntelliJ




最初に、IntelliJIDEA用のJRebelプラグインをインストールします。 [設定]-> [プラグイン]に移動し、[ リポジトリの参照 ]をクリックします。 プラグインのリストでJRebelプラグインを簡単に見つけることができます。インストールできます。







もちろん、最初のインストール中に登録する必要があります。







ペットクリニック




演習のプロジェクトコードを取得します。



git clone git://github.com/xebia-france-training/xebia-petclinic.git







IDEで結果のプロジェクトを開きます( Mavenプロジェクトとして )。



小さな設定




1. rebel.xmlを生成します







rebel.xmlの保存 、このプロジェクトのソースのディレクトリとしてマークされるディレクトリに最適です。 src / main / javaまたはsrc / main / resourcesにあります。 これは、プロジェクトをビルドした後、 rebel.xmlがデプロイされたアプリケーションのWEB-INF /クラスにあるようにするために必要です。



2. main / java / resourcesをrebel.xmlに追加します



このプラグインはrebel.xmlを生成するため、ソースコードがコンパイルされる場所( target \ classes )およびアプリケーションのWebパーツファイル( main / webapp )の場所に基づいてパスが取得されるため、場合によっては追加のパスを手動で追加する必要があります。 現時点では、そのような場合があります-src / main / resourcesディレクトリはジェネレーターによってrebel.xmlに含まれません。 そして、このディレクトリには、後で変更したいリソースがいくつかあります。



適切な要素を追加すると、新しいrebel.xmlは次のようになります。







このアプローチは、いくつかのニュアンスを示すために選択されました。 実際、Mavenを使用してプロジェクトをビルドする場合、 特別なプラグインを使用してrebel.xmlを生成し、それに応じて構成することができます。



JRebelと連携しています



打ち上げ


Tomcat 7でアプリケーションを実行します。これを行うには、[ 構成の編集]を選択します







Tomcatを選択->ローカル構成







次に、デプロイメント用の成果物を追加します。 この選択は、アプリケーションをパッケージモードまたはアンパック(展開)モードのどちらでデプロイするかを決定することを示唆しています。 現在、この選択は原則的ではありません。 解凍モードを選択したとしましょう。



操作が完了したら、プロジェクトを開始する準備ができました。







起動すると、起動コンソールに次のように表示されます。







つまり、すべてが順調です-JRebelが有効になりました。 さらに、アプリケーション開発プロセスが進むと、JRebelがいくつかのディレクトリの変更を追跡するというメッセージが表示されます。







これらは、 rebel.xmlで記述されたディレクトリです。 アプリケーションをロードするときに、JRebelが最初に行うことは、 WEB-INF / classesで構成ファイルを見つけようとすることです。成功した場合は、クラスローダーにrebel.xmlで見つかったパスに沿ってリソースを探します。 rebel.xmlで指定されたディレクトリに目的のリソースが見つからない場合、「ロールバック」が通常のローダーロジックに送信されます。 リソースはデプロイされたアプリケーションから検索されます。



開始位置




最初にlocalhostでアプリケーションを開いて、 8080の内容を見てみましょう



所有者を検索」リンク、 「所有者追加」リンクたどり、空の値をフォームに保存してみます。 検証結果は、次の図に表示されます。







変更を加える




結果が見やすいように、コードにいくつかの変更を加えてみましょう。 OwnerValidatorクラスは、フォームフィールドをチェックします。 別の方法でチェックの一部を取り出し、明確にするために、アドレスチェックをまったく削除します。 つまり OwnerValidatorクラスの変更の結果、新しいメソッドが追加され、元のロジックが少し変更されました。これは、次にデータを保存しようとしたときに表示されます。







変更されたクラスを再コピーする必要があります。その後、空のデータを保存する試みを繰り返すことができます。その結果、次の結果が表示されます。







ご覧のとおり、予想どおり、[ アドレス]フィールドは不要になりました。 コンソールに、JRebelからの次のメッセージが表示されます。







OwnerValidator#validateメソッドが呼び出されると、 ファイルの更新がチェックされ、コードがコンパイルされたため、JRebelはクラスを更新する必要があると判断しました。 したがって、JRebelがクラスを更新するのは、呼び出しの直前、つまりレイジーモードでのみです。



それでは、もっと面白いことを試してみましょう。 確認のために同じフォームで別のクラスを「ハングアップ」したいとします。 FirstNameValidatorと呼びましょう。 また、messages.propertiesに新しいエントリを追加します







さらに、 Springの機能を使用して新しいクラスを追加したいと思います。 petclinic-servlet.xmlに新しいコンポーネントを追加します







最後の手順は、 @ Autowiredアノテーションを使用して、 AddOwnerFormクラスに実装されているコントローラーコードにコンポーネントを追加することです。







合計で、4つのファイルが変更されました。



ここで、新しいクラスと変更されたクラスをコンパイルする必要があり、フォームに再度入力してみてください。 フィールドに「アントン」以外の値を入力すると、チェックは「アントン」である必要があります。これは、 Messages.propertiesに追加し、 FirstNameValidatorで使用するメッセージと同じです。 。







合計



この小さなガイドが、興味があり、プロジェクトでJRebelを使用してみたい人に役立つことを願っています。 質問があれば-書いて-私は喜んで答えます!



All Articles