Spring デバッガー
IntelliJ IDEA は、設計時に Spring 固有の多くの問題に対処できます。 ただし、一部の問題は実行時の調査が必要になる場合があります。 この場合、IntelliJ IDEA のデバッガーは Spring のコンテキストを認識し、デバッグモードで実行されている Spring アプリケーションをインスペクションおよび操作するためのツールを提供します。
Spring デバッガープラグインをインストールする
この機能は、インストールして有効にする必要がある Spring デバッガー(英語)プラグインに依存しています。
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 Spring デバッガープラグインを見つけて、 インストール をクリックします (プロンプトが表示されたら、IDE を再起動します)。
Spring デバッガーは、次の 実行構成型でサポートされています。
現在の構成を確認する
.properties で定義されたプロパティは、実行時に別の .properties ファイルまたは bean によってオーバーライドされることがよくあります。 実行時の実際の値が .properties ファイルで指定された値と異なる場合、対応する行に実際の構成値を示す インレイヒント が表示されます。

プロパティが複数のコンテキストで定義されている場合、インレイヒントには複数の定義が表示されます。
プロパティの再定義に移動する
プロパティ値をオーバーライドするコード部分を確認するには、実際の値を示すインレイヒントをクリックします。 オーバーライドするコードがエディターで開きます。

データベース接続
Spring アプリケーションをデバッグモードで実行している場合、IntelliJ IDEA は データベース ツールウィンドウに現在のデータベース接続を表示します。
これは、他のシナリオの中でも、次のような場合に便利です。
IntelliJ IDEA にまだ設定されていない データソース
マイクロサービスの場合のような多数のデータベース
Docker Compose などのオーケストレーションツール

検出されたデータベースでは、他の データソースの場合と同様に、テーブルを表示したり、SQL クエリを直接実行したり、スキーマを調べたりすることができます。

デバッガー式における Spring コンテキスト
IntelliJ IDEA のデバッガーで式を評価する際、現在の実行コンテキストに存在するかどうかに関係なく、すべてのプロパティと Bean にアクセスできます。 これにより、任意の bean のメソッドを実行してデータを取得し、仮説を検証できます。
エディターから式を評価する / ウォッチを追加する
Alt を押したまま、評価する式をクリックします。

または、式を選択してから Ctrl+Alt+F8 を押すか、表示されるフローティングツールバーから 式の評価 を選択します。

ツールバーの
をクリックすると、式をウォッチに追加できます。
任意の式を評価する / ウォッチを追加する
任意の式を評価するには、 変数 タブの 式の評価 フィールドに入力 Enter

結果はすぐ下に表示されます。 式フィールドの右側にある
をクリックして、 式をウォッチに追加することもできます。

利便性のために、 結果}]} as it appears in the context filed.}]} as it appears in the context filed.}]} as it appears in the context filed. 行の近くにある「要素を探索する 」をクリックすると、別のダイアログでコレクションを表示できます。 このビューでは、結果がページ分けされ、検索やフィルタリングが可能です。

式の結果が JSON 形式または XML 形式の文字列である場合、それを構造化ドキュメントとして表示できます。 これにより、 コードの折りたたみや 選択範囲の拡大または縮小などのエディター機能を使用して、サブツリーを操作したり、大きなオブジェクト内での便利なナビゲーションを行ったりすることができます。

Spring プロパティを評価する
式フィールドの右側部分で、メニューから Spring プロパティ を選択します。
評価したいプロパティを入力し、 Enter を押します。 プロパティの値と詳細が 結果}]} as it appears in the context filed.}]} as it appears in the context filed.}]} as it appears in the context filed. ノードに表示されます。

このプロパティのウォッチを設定する場合は、式フィールドの右側部分にある
をクリックします。
ブレークポイント内の式
式やウォッチポイントと同様に、ブレークポイントでも式を使用できます。 これにより、一時的なログ記録を追加し、条件が満たされた場合にのみアプリケーションを停止できます。
条件付きブレークポイントを設定する
ブレークポイントを右クリックし、 条件 フィールドに条件を入力します。

ブレークポイントは、条件が
trueと評価された場合にのみアプリケーションを一時停止します。
ログブレークポイントを設定する
ブレークポイントを右クリックし、 詳細 をクリックして、 評価して記録 フィールドにログ記録式を入力します。

ブレークポイントは、アプリケーションを一時停止するだけでなく、式の結果をコンソールに記録します。 アプリケーションを一時停止せずに式のみをログに記録したい場合は、 中断 チェックボックスをオフにしてください。

ブレークポイントの種類とフィルターの詳細については、 ブレークポイントページを参照してください。
bean のランタイム情報を確認する
エディター画面で bean が表示されている場合、そのランタイム情報を確認できます。
エディターで bean がロードされたクラス定義付近のガターアイコン(
)をクリックします。

開いたメニューから ランタイム情報を表示 を選択します。

以下の情報を表示するポップアップが表示されます。
注入先- この bean が現在注入されている他の bean
依存先- この bean に注入されている他の bean(注入先 の逆)

トランザクションのデバッグ
現在デバッグ中の操作が JPA トランザクション内で行われている場合、トランザクションの分離レベル、伝播ステータス、キャッシュの内容などのセッションコンテキストをデバッガーで直接表示できます。
取引の詳細を表示
トランザクション内で実行される行でアプリケーションを一時停止します。

デバッグ ツールウィンドウを開き、 変数 タブに切り替えます。 トランザクションの詳細は トランザクション ノードに表示されます。

トランザクション中は、トランザクションが開始されたコード内の場所に移動することもできます。
取引元に移動する
変数 タブで ソースに移動 をクリックします

トランザクションに含まれる JPA エンティティについては、 デバッグ ツールウィンドウの 変数 タブとコード内のエンティティのメンションの近くで現在の状態を確認できます。

ロードされた Bean を確認する
Spring アプリケーションをデバッグモードで実行すると、 プロジェクト ツールウィンドウに、Spring の観点から各 bean の実行時ステータスが表示されます。

アイコンの色は次のステータスを示します。
緑 – 満載
透明 – 読み込まれていない
黄色 – 嘲笑される
さらに、bean には次のいずれかのアイコンが表示されます。
:
@Componentアノテーションで宣言された自動検出可能な Bean と、@Beanアノテーションが付けられたメソッド。: 構成 Bean (
@Configurationまたは暗黙的に@Configurationを含むその他のアノテーションが付けられている)。: リポジトリ Bean (
@Repositoryでアノテーションが付けられているか、org.springframework.data.repository.Repositoryインターフェースを拡張している)。: コントローラー (
@Controllerおよび@RestControllerでアノテーションが付けられたクラス)。: 暗黙的な Bean - つまり、明示的に定義されていない Spring によって追加されるサービス Bean。
: 抽象 XML Bean (XML ファイルの
abstract="true"属性で定義)。: インフラストラクチャ Bean - つまり、ViewResolver や
context:component-scanを使用する Bean など、構成および一般的なインフラストラクチャサポートに関連する XML ファイルで定義された Bean です。: プロトタイプスコープ (XML ファイルの
scope="prototype"で定義) を持つ Bean。: XML ファイルで定義された他の Bean。
Spring デバッガーを無効化する
Spring デバッガーの機能は、特定の 実行/デバッグ構成で無効化できます。
実行 / デバッグ構成の設定で、 オプションを変更 をクリックし、 Spring デバッガーを無効化する を選択します。

リモート Spring アプリケーションをデバッグする。
Spring デバッガーは、次の組み込みコンテナーで実行されているリモート Spring アプリケーションのデバッグにも対応しています。
Tomcat
Jetty
Undertow
コンテナー間の相違点。
サポートされているコンテナーでスレッドモデルが異なるため、Spring デバッガーはコンテキストを遅れて提供する場合があります。
Tomcat – コンテキストがすぐに利用可能です。
Jetty – コンテキストは少し遅れて利用可能になります(最初の HTTP リクエストまで)。
Undertow – コンテキストは少し遅れて利用可能になります(最初の HTTP リクエストまで)。
デバッグエージェント付きで Spring アプリケーションを実行する。
デバッグエージェントをアタッチする VM オプションを付けて Spring アプリケーションを起動してください。
Docker Compose 構成で
JAVA_TOOL_OPTIONSを使用して VM オプションを指定する例:http-server: depends_on: - postgresql image: 'jb/http-server:latest' environment: - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/db - SPRING_DATASOURCE_USERNAME=user - SPRING_DATASOURCE_PASSWORD=secret - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 ports: - '8080:8080' - '5005:5005' # Map debug port 5005 to host port 5005VM オプションの詳細については、 デバッグエージェント を参照してください。
実行 / デバッグ構成を作成する
に移動します。 または、 Alt+Shift+F10 を押してから 0 を押します。
実行 / デバッグ構成ダイアログで、ツールバーの
をクリックするか、 Alt+Insert を押します。 リストから リモート JVM デバッグ を選択します。
デバッグモード で、デバッガーがリモート JVM に接続するか、受信接続をリッスンするかを指定します。
リモート JVM をリッスン を選択した場合は、リモート JVM が切断された後にデバッガーを自動的に再始動するかどうかを指定します。 このようにして、デバッガーは常に受信接続を処理する準備ができています。
(Windows の場合) 必要に応じて、目的の トランスポート(英語)を指定します。 IntelliJ IDEA は適切なトランスポートを自動的に選択するため、通信方法に関して特別な要件がない限り、設定する必要はありません。
リモート JVM のホストとポート番号を指定してください。 IPv4 と IPv6 の両方がサポートされています。 ポート番号が正しく指定されていること、使用されていないこと、ファイアウォールでブロックされていないことを確認してください。
ソースを探すモジュールを指定します。 IntelliJ IDEA は、最初に選択されたモジュールをチェックし、次に他のモジュール(存在する場合)をチェックします。 ソースは、完全修飾クラス名を使用して照合されます。 完全修飾名で一致するものがない場合、IntelliJ IDEA はファイル名で一致するものを見つけようとします。
debuggee JVM のデバッグエージェントをまだ構成していない場合は、必要な VM オプションを リモート JVM のコマンドライン引数 フィールドからコピーできます。

実行 / デバッグ構成を開始する
ホストアプリケーションが稼働中であり、 デバッグエージェントを追加する VM オプションで開始されていることを確認してください。
