かんがるーさんの日記

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

Spring Boot でログイン画面 + 一覧画面 + 登録画面の Webアプリケーションを作る ( 番外編 )( Spring Boot を 1.2.2 → 1.2.3 へバージョンアップ )

概要

Spring Boot の 1.2.3 がリリースされたので、バージョンアップします。他に Java SE と Spring Loaded もバージョンアップします。

  • Spring Boot 1.2.2 → 1.2.3
  • Java SE 8u25 → 8u40
  • Spring Loaded 1.2.1 → 1.2.3

ソフトウェア一覧

参考にしたサイト

手順

Spring Boot 1.2.3 へのバージョンアップ

  1. IntelliJ IDEA 上で 1.0.x-upgrade-springboot-1.2.3 ブランチを作成します。

  2. build.gradle を リンク先のその1の内容 に変更します。

  3. Gradle tasks View の左上にある「Refresh Gradle projects」アイコンをクリックして、変更した build.gradle の内容を反映します。今回は Spring Framework が 4.1.6 へバージョンアップされているのでかなり時間がかかります。

  4. Project View の External Libraries に表示される org.springframework.boot のライブラリのバージョンが 1.2.3.RELEASE になっていることを、org.springframework のライブラリのバージョンが 4.1.6.RELEASE になっていることを確認します。

    f:id:ksby:20150401222853p:plain

  5. IntelliJ IDEA のメインメニューから「Build」-「Rebuild Project」メニューを選択して実行し、モジュールをコンパイルし直します。

  6. 「Run 'Tests in 'ksbysample...' with Coverage」を選択してテストを実行し、テストが全て成功することを確認します。

    f:id:ksby:20150401223738p:plain

  7. Gradle tasks View から build タスクを実行し BUILD SUCCESSFUL が表示されることも確認します。

    f:id:ksby:20150401224738p:plain

  8. Gradle tasks View から bootRun タスクを実行して Tomcat を起動した後、ブラウザから画面の動作に問題がないか確認します。確認後、Run View で Ctrl+F2 を押して Tomcat を停止します。

Java SE 8u40 へのバージョンアップ

Java SE 8u40 は以前 JDK 8u40 + Spring Loaded 1.2.1 でエラーログが出力される の確認をした際に C:\Java\jdk1.8.0_40 へインストールしました。インストール手順は省略します。

  1. まずは Project で使用する Java SE を 8u40 へ変更します。IntelliJ IDEA のメインメニューから「File」-「Project Structure...」メニューを選択します。

  2. 「Project Structure」ダイアログが表示されます。画面左側で「Project Settings」-「Project」を選択した後、画面右側の「Project SDK」の中の「New...」ボタンをクリックします。

    f:id:ksby:20150401230602p:plain

    「New...」ボタンの下に「Set up Project SDK」メニューが表示されますので、「JDK」メニューを選択します。

    f:id:ksby:20150401230807p:plain

  3. 「Select Home Directory for JDK」ダイアログが表示されます。C:\Java\jdk1.8.0_40 を選択した後「OK」ボタンをクリックします。

    f:id:ksby:20150402000445p:plain

  4. 「Project SDK」のドロップダウンリストで java version "1.8.0_40" が選択されていることを確認した後「OK」ボタンをクリックします。

    f:id:ksby:20150401231214p:plain

Spring Loaded 1.2.3 へのバージョンアップ

  1. build.gradle を リンク先のその2の内容 に変更します。

  2. Gradle tasks View の左上にある「Refresh Gradle projects」アイコンをクリックして、変更した build.gradle の内容を反映します。

  3. Gradle tasks View から bootRun タスクを実行して、例外が発生せずに "Started Application in ..." のログが最後に出て Tomcat が正常に起動することを確認します。

  4. ブラウザから画面の動作に問題がないか確認します。

  5. Spring Loaded が正常に動作するか確認します。src/main/java/ksbysample/webapp/basic/web の下の LoginController.javaリンク先の内容 に変更します。

  6. Ctrl+F9 でコンパイルした後ログイン画面を表示し、"★★★ LoginController::index が呼び出されました" のログが表示されることを確認します。確認後、LoginController.java を元に戻します。

    f:id:ksby:20150401233122p:plain

  7. Run View で Ctrl+F2 を押して Tomcat を停止します。

  8. 「Run 'Tests in 'ksbysample...' with Coverage」を選択してテストを実行し、テストが全て成功することを確認します。

  9. Gradle tasks View から build タスクを実行し BUILD SUCCESSFUL が表示されることも確認します。

webapp_startup.bat の修正

  1. webapps/ksbysample-webapp-basic/bat の下の webapp_startup.bat を リンク先の内容 に変更します。

  2. webapp_startup.bat を C:\webapps\ksbysample-webapp-basic\bat の下へコピーします。

  3. Gradle tasks View から clean タスク → build タスクを実行して jar ファイルを作成し直した後、jar ファイルを C:\webapps\ksbysample-webapp-basic\lib

  4. コマンドプロンプトを起動して以下のコマンドを実行します。

    > cd /d C:\webapps\ksbysample-webapp-basic\bat
    > webapp_startup.bat

  5. ブラウザから画面の動作に問題がないか確認します。確認後 Ctrl+C を押して Tomcat を停止した後、コマンドプロンプトを閉じます。

commit、GitHub へ Push、1.0.x-upgrade-springboot-1.2.3 -> 1.0.x へ Pull Request、1.0.x でマージ、1.0.x-upgrade-springboot-1.2.3 ブランチを削除

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

ソースコード

build.gradle

■その1

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
        classpath("org.springframework:springloaded:1.2.1.RELEASE")
    }
}
  • classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.2.RELEASE")classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE") へ変更します。

■その2

buildscript {
    repositories {
        jcenter()
        maven {
            url "http://repo.spring.io/repo/"
        }
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
        classpath("org.springframework:springloaded:1.2.3.RELEASE")
    }
}
  • Spring Loaded はまだ jcenter にアップロードされていないので、repo.spring.io から取得します。maven { url "http://repo.spring.io/repo/" } を追加します。
  • classpath("org.springframework:springloaded:1.2.1.RELEASE")classpath("org.springframework:springloaded:1.2.3.RELEASE") へ変更します。

LoginController.java

    @RequestMapping("/")
    public String index() {
        System.out.println("★★★ LoginController::index が呼び出されました");
        return "login";
    }
  • System.out.println("★★★ LoginController::index が呼び出されました"); を追加します。

webapp_startup.bat

@echo on

setlocal
set JAVA_HOME=C:\Java\jdk1.8.0_40
set PATH=%JAVA_HOME%\bin;%PATH%
set WEBAPP_HOME=C:\webapps\ksbysample-webapp-basic
set WEBAPP_JAR=ksbysample-webapp-basic-0.0.1-SNAPSHOT.jar

cd /d %WEBAPP_HOME%
java -server ^
     -Xms1024m -Xmx1024m ^
     -XX:MaxMetaspaceSize=384m ^
     -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled ^
     -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 ^
     -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark ^
     -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps ^
     -Xloggc:%WEBAPP_HOME%/logs/gc.log ^
     -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M ^
     -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%WEBAPP_HOME%/logs/`date`.hprof ^
     -XX:ErrorFile=%WEBAPP_HOME%/logs/hs_err_pid_%p.log ^
     -Dsun.net.inetaddr.ttl=100 ^
     -Dspring.profiles.active=product ^
     -jar lib\%WEBAPP_JAR%
  • set JAVA_HOME=C:\Java\jdk1.8.0_25set JAVA_HOME=C:\Java\jdk1.8.0_40 へ変更します。

履歴

2015/04/02
初版発行。