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を使用してみたい人に役立つことを願っています。 質問があれば-書いて-私は喜んで答えます!

Source: https://habr.com/ru/post/J135922/


All Articles