前回の記事では、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つのファイルが変更されました。
- 新しいFirstNameValidatorクラスが追加されました
- 変更された既存のクラスAddOwnerForm
- 変更されたmessages.properties
- petclinic-servlet.xmlにより編集
ここで、新しいクラスと変更されたクラスをコンパイルする必要があり、フォームに再度入力してみてください。
「 名 」フィールドに
「アントン」以外の値を入力すると、チェックは
「アントン」である
必要があります。これは、
Messages.propertiesに追加し、
FirstNameValidatorで使用する
メッセージと同じです。 。
合計
この小さなガイドが、興味があり、プロジェクトで
JRebelを使用してみたい人に役立つことを願っています。 質問があれば-書いて-私は喜んで答えます!