かんがるーさんの日記

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

Spring Boot で書籍の貸出状況確認・貸出申請する Web アプリケーションを作る ( 番外編 )( IntelliJ IDEA 2016.1 の Spring MVC View に URL 一覧を表示する )

概要

Spring Boot で書籍の貸出状況確認・貸出申請する Web アプリケーションを作る ( 番外編 )( IntelliJ IDEA を 15.0.3 → 15.0.4 → 2016.1 へ )IntelliJ IDEA 2016.1 へバージョンアップしたところ、Spring MVC View に URL 一覧が表示されなくなりました。

f:id:ksby:20160319202938p:plain

結構気に入っている機能なので表示させる方法を調べました。設定の手順を記載します。

※Spring MVC View は @RequestMapping アノテーションに記述されている URL 一覧を表示する IntelliJ IDEA Ultimate Edition の機能です。

f:id:ksby:20160320010729p:plain

目次

  1. feature/119-issue ブランチの作成
  2. Spring Beans View に Bean 一覧を表示する
  3. Spring MVC View に URL 一覧を表示する
  4. commit、GitHub へ Push、feature/119-issue -> 1.0.x へ Pull Request、1.0.x でマージ、feature/119-issue ブランチの削除

手順

feature/119-issue ブランチの作成

  1. feature/119-issue ブランチを作成します。

Spring Beans View に Bean 一覧を表示する

最初に Spring Beans View に Bean 一覧を表示させる設定をします。

  1. IntelliJ IDEA のメインメニューから「File」->「Project Structure...」を選択します。

  2. 「Project Structure」ダイアログが表示されます。左側のリストから「Project Settings」->「Modules」を選択します。

    画面中央のリストには 15.x のバージョンの時と異なり、「ksbysample-webapp-lending_main」「ksbysample-webapp-lending_test」「ksbysample-webapp-lending」の3つの項目が表示されています。

    ■ksbysample-webapp-lending_main ( Sources & Resources 用 ) f:id:ksby:20160319204647p:plain

    ■ksbysample-webapp-lending_test ( Tests & Test Resources 用 ) f:id:ksby:20160319204857p:plain

    f:id:ksby:20160319205049p:plain

    ※ksbysample-webapp-lending_test から ksbysample-webapp-lending_main のモジュールが参照できるよう「Dependencies」タブの設定に「ksbysample-webapp-lending_main」が追加されています。

    ※テスト用のライブラリは 15.x までは Scope が「Test」になっていたのですが、2016.1 からは「Compile」になっていますね ( Scope のメニューには「Test」も残っていました )。

    ※赤字の "C:\project-springboot\ksbysample-webapp-lending\build..." の設定は不要なので、隣の「-」ボタンをクリックして削除しました。

    ■ksbysample-webapp-lending ( Excluded 用 ) f:id:ksby:20160319205814p:plain

  3. 画面中央のリストの「ksbysample-webapp-lending_main」を選択します。

    f:id:ksby:20160319210353p:plain

    左上の「+」をクリックした後、「Spring」を選択して追加します。

    f:id:ksby:20160319210944p:plain

    f:id:ksby:20160319210955p:plain

  4. 画面右側のリストの上の「+」をクリックします。

    f:id:ksby:20160319211415p:plain

  5. 「New Application Context」ダイアログが表示されます。ダイアログ上に表示されるチェックボックスを全てチェックした後、「OK」ボタンをクリックします。

    f:id:ksby:20160319212249p:plain

    f:id:ksby:20160319212359p:plain

    「Project Structure」ダイアログに戻り、チェックしたファイルが追加されます。

    f:id:ksby:20160319212654p:plain

  6. 「OK」ボタンをクリックして「New Application Context」ダイアログを閉じます。

  7. メイン画面に戻って Spring Beans View を表示すると、登録されている Bean が表示されます。

    f:id:ksby:20160320000019p:plain

Spring MVC View に URL 一覧を表示する

次に Spring MVC View に URL 一覧を表示する設定をします。

  1. 再び IntelliJ IDEA のメインメニューから「File」->「Project Structure...」を選択します。

  2. 「Project Structure」ダイアログが表示されます。左側のリストから「Project Settings」->「Modules」を選択します。

  3. 画面中央のリストの「ksbysample-webapp-lending_main」を選択します。

    f:id:ksby:20160320001018p:plain

    左上の「+」をクリックした後、「Web」を選択して追加します。

    f:id:ksby:20160320001300p:plain

    f:id:ksby:20160320001434p:plain

    ※画面右側に表示される「Web」の設定は何も変更しません。

  4. .idea/modules/web/WEB-INF の下に作成されている web.xml の内容を リンク先の内容 に変更します。

  5. .idea/modules/web/WEB-INF を選択後、コンテキストメニューを表示して「New」-「XML Configuration File」-「Spring Config」を選択します。

    f:id:ksby:20160320005819p:plain

    「New File」ダイアログが表示されますので "dispatcher-servlet.xml" と入力した後「OK」ボタンをクリックします。

    f:id:ksby:20160320010018p:plain

    dispatcher-servlet.xml が作成されますので、リンク先の内容 に変更します。

  6. web.xml, dispatcher-servlet.xml は以下の場所に作成されます。

    f:id:ksby:20160320003750p:plain

  7. 15.x まで使用していたルート直下の web ディレクトリを削除します。

  8. メイン画面の下部に表示されている「Spring」をクリックして Spring MVC View を表示した後、画面左側の「Show controllers」ボタンをクリックして、ボタンが押されていない状態にします。

    ■「Show controllers」ボタンを押す前 f:id:ksby:20160320004658p:plain

    ■「Show controllers」ボタンを押した後 f:id:ksby:20160320004806p:plain

  9. 以上で設定は完了です。これで @RequestMapping に設定された URL の一覧が Spring MVC View に表示されます。

    f:id:ksby:20160320005315p:plain

    ※15.x の時は「Show controllers」ボタンを OFF にせずに Controller クラス毎にまとめて表示させることができたのですが、2016.1 で同じように表示させる方法が分かりませんでした。「Show controllers」ボタンを OFF にすると表示されるようになったので、一旦この設定で行きます。

commit、GitHub へ Push、feature/119-issue -> 1.0.x へ Pull Request、1.0.x でマージ、feature/119-issue ブランチの削除

  1. commit、GitHub へ Push、feature/119-issue -> 1.0.x へ Pull Request、1.0.x でマージ、feature/119-issue ブランチを削除、をします。

ソースコード

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>
  • <servlet> ... </servlet><servlet-mapping> ... </servlet-mapping> の記述を追加します。

dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <context:component-scan base-package="ksbysample.webapp.lending.web" />
    <context:component-scan base-package="ksbysample.webapp.lending.webapi" />

</beans>
  • <context:component-scan base-package="..." /> の "..." の部分には、@RequestMapping アノテーションが付加された Controller クラスを配置したパッケージを指定します。