かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot 2.0.x の Web アプリを 2.1.x へバージョンアップする ( 番外編 )( IntelliJ IDEA の Class Diagram 生成機能メモ書き )

概要

記事一覧はこちらです。

Spring Boot 2.0.x の Web アプリを 2.1.x へバージョンアップする ( その4 )( テストが大量に失敗する原因を解消する ) で mvcValidator bean を定義しているクラスを探している時に Class Diagram を生成したのですが、これまで使ったことがない機能を知ったのでメモ書きとして残しておきます。

  • Class Diagram は最初は依存関係が表示されていない。クラスの中でフィールドで定義して使用している場合そのままだと何も関係を示す線が表示されないが、「Show Dependencies」ボタンを押すと関係が分かる線が表示されるようになる。
  • 「Add Class to Diagram...」メニューで生成済の Class Diagram に別のクラスを追加できる。
  • 「Show Implementations」で指定したクラスを継承しているクラスや指定したインターフェースを実装しているクラスを、 「Show Parents」で継承元クラスや実装しているインターフェースを表示できる。

参照したサイト・書籍

目次

  1. mvcValidator bean を定義しているクラスの Class Diagram を生成する
  2. 生成済の Class Diagram に別のクラスを追加する+依存関係を表示する
  3. クラスが実装しているインターフェースを表示する(この方法で継承元クラスも表示できる)
  4. インターフェースを実装しているクラスを表示する

手順

mvcValidator bean を定義しているクラスの Class Diagram を生成する

mvcValidator bean を定義している箇所を「Find in Path」で探すと以下のクラスで定義されていることが分かります。

f:id:ksby:20190216001611p:plainf:id:ksby:20190216001653p:plain
  • org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#mvcValidator
  • org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.EnableWebMvcConfiguration#mvcValidator

クラス間の関係がよく分からなかったので Class Diagram を作成します。後者の org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.EnableWebMvcConfiguration#mvcValidator に @Override アノテーションが付与されているので、こちらをベースに作成します。

mvcValidator メソッドにマウスカーソルを移動してコンテキストメニューを表示した後、「Diagrams」-「Show Diagram...」メニューを選択します。

f:id:ksby:20190216002656p:plain

Class Diagram が生成されてクラスの関係が分かりました。

f:id:ksby:20190216003457p:plain

生成済の Class Diagram に別のクラスを追加する+依存関係を表示する

Class Diagram 上で WebMvcConfigurationSupport と EnableWebMvcConfiguration の間に DelegatingWebMvcConfiguration が表示されているのでソースを表示させてみると、フィールドで WebMvcConfigurerComposite クラスのインスタンスを生成しているので、このクラスを作成した Class Diagram に追加してみます。

f:id:ksby:20190216003804p:plain

Class Diagram の何もないところでコンテキストメニューを表示した後、「Add Class to Diagram...」メニューを選択します。

f:id:ksby:20190216004130p:plain

「Enter class name to add」ダイアログが表示されるので追加したクラス名 WebMvcConfigurerComposite を入力します。該当するクラスが表示されるので、今回は1つだけ表示されている WebMvcConfigurerComposite クラスを選択します。

f:id:ksby:20190216004313p:plain

Class Diagram に WebMvcConfigurerComposite クラスが追加されますが、DelegatingWebMvcConfiguration クラスとの間に何の線も引かれずこのままでは関係が分かりません。

f:id:ksby:20190216004638p:plain

Class Diagram の上に表示されているボタンから「Show Dependencies」ボタンをクリックします。

f:id:ksby:20190216005052p:plain

そうすると DelegatingWebMvcConfiguration クラスが WebMvcConfigurerComposite クラスを生成していること、1対1の関係であることを示す線が表示されます。

f:id:ksby:20190216005310p:plain

クラスが実装しているインターフェースを表示する(この方法で継承元クラスも表示できる)

WebMvcConfigurerComposite クラスのソースを見ると WebMvcConfigurer インターフェースを実装していることが分かります。WebMvcConfigurer インターフェースを Class Diagram に追加してみます。

f:id:ksby:20190216010651p:plain

Class Diagram 上で WebMvcConfigurerComposite クラスを選択してからコンテキストメニューを表示した後、「Show Parents」メニューを選択します。

f:id:ksby:20190216010953p:plain

継承元クラスや実装しているインターフェースが表示されるので、今回は WebMvcConfigurer インターフェースを選択します。

f:id:ksby:20190216011629p:plain

Class Diagram 上に WebMvcConfigurer インターフェースが表示されます。

f:id:ksby:20190216011900p:plain

インターフェースを実装しているクラスを表示する

WebMvcConfigurer インターフェースを実装しているクラスが他にあるか調べて表示させてみます。

Class Diagram 上で WebMvcConfigurer インターフェースを選択してからコンテキストメニューを表示した後、「Show Implementations」メニューを選択します。

f:id:ksby:20190216013220p:plain

WebMvcConfigurer インターフェースを実装しているクラスのリストが表示されます。今回は3クラス選択してみます(Ctrlキーを押しながらクリックすると複数選択できます)。

f:id:ksby:20190216013404p:plain

Class Diagram 上に選択したクラスが表示されます。

f:id:ksby:20190216013712p:plain

履歴

2019/02/16
初版発行。