Spring 5 & Spring Boot 2ハンズオン準備手順

> 2018-11-27 Spring 5.1 + Spring Boot 2.1にアップグレードしました！

ハンズオンでは、下記の準備が済んでいるご自身のノートPCをお持ちください。

何か準備について不明点がありましたら、Twitterで僕のアカウント[@suke_masa](https://twitter.com/suke_masa)までリプライかDMをいただければお答えします！

# スライドのダウンロード
最初の30分間で利用する、Spring概要講義の資料です。後のハンズオンでも参考にするために、下記のURLから手元にダウンロードしておくと便利です。
https://www.slideshare.net/masatoshitada7/pivotalspring-framework-51-spring-boot-21-jjugccc

<!------------------------------------------------------------------------->
# 事前にインストールするもの
PCは64ビットOSでメモリ4GB以上を推奨します。OSはWindows/macOS/LinuxのいずれでもOKです。

- [JDK 11](https://jdk.java.net/11/)
    - ZuluやAdoptOpenJDKなど、どのビルドでもおそらく動くと思いますが、僕はリンク先にあるOracleビルドのOpenJDKを利用しています
    - 環境変数JAVA_HOMEおよびPATHを設定してください
    - IDEにもJDK 11を設定しておいてください
- IDE（下記2点のいずれか）
    - [IntelliJ IDEA](https://www.jetbrains.com/idea/download/)
        - Ultimate Editionを推奨しますが、Community EditionでもOKです
    - [Pleiades All in OneのEclipse 2018-09版](http://mergedoc.osdn.jp/)
        - [Java]の[Standard Edition]でOKです
        - 通常のEclipseやSpring Tool Suiteは、JDK 11関連の設定やプラグインの追加が煩雑なため、Pleiades All in Oneをお勧めします
    - IDEは最新版をインストールしてください。古いバージョンの場合、JDK 11に対応していなかったり、JUnit 5で記述しているテストが実行できないことがあります。
    - 文字コードはUTF-8に設定してください。
- curlコマンド(演習6のみ)
    - Windowsの場合は http://www.paehl.com/open_source/ から「CURL 7.xx.x」の「Download WITHOUT SSL」を選択してダウンロードし、環境変数PATHを設定しておいてください。
    - macOSの場合はデフォルトでインストール済みです。
- jqコマンド(演習6のみ)
    - Windowsの場合は https://stedolan.github.io/jq/download/ からダウンロードし、ファイル名を「jq.exe」に変更後、環境変数PATHを設定しておいてください。
    - macOSの場合は[Homebrew](https://brew.sh/index_ja)コマンド `brew install jq` でインストールできます。

> データベースおよびアプリケーションサーバーは、組み込みのもの（H2、Embedded Tomcat）を使うのでインストールの必要はありません。

<!------------------------------------------------------------------------->
# ソースコードのクローン

下記のコマンドで、[GitHub](https://github.com/MasatoshiTada/spring5-boot2-handson)からクローンしてください。

```bash
$ git clone https://github.com/MasatoshiTada/spring5-boot2-handson.git
```

<!------------------------------------------------------------------------->
# ソースコードのインポート（Eclipseの場合）
(1) Eclipseを起動します。
(2) [ファイル]-[インポート]を選択します。
(3) [Maven]-[既存Mavenプロジェクト]を選択して[次へ]を選択します。

<img width="428" alt="eclipse01.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/58650/d53830f9-1b5c-342a-6a59-e510d0b7b128.png">

(4) [ルート・ディレクトリー]の[参照]ボタンをクリックして、クローンした[spring5-boot2-handson]フォルダを選択します。

<img width="472" alt="eclipse02.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/58650/2ebbf0a3-52b7-4aa1-08f5-2174604f0327.png">

(5) [01-spring5]・[02-spring5-answer]・[03-boot2]・[04-boot2-answer]の4つのプロジェクトがすべて表示され、チェックが入っていることを確かめて[完了]を選択します。

<img width="430" alt="eclipse03.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/58650/b5a70ba5-f445-17bb-ef72-189004f45fe9.png">

(6) プロジェクトのインポートが始まります。Maven Centralからライブラリのダウンロードを行うため、しばらく時間がかかります。

<!------------------------------------------------------------------------->
# ソースコードのインポート（IntelliJ IDEAの場合）
(1) IntelliJ IDEAを起動し、[Import Project]を選択します。

![スクリーンショット 2018-07-08 17.23.48.png](https://qiita-image-store.s3.amazonaws.com/0/58650/6de84230-0c0c-7f53-65d2-4a85c3688a7e.png)

(2) クローンした[spring5-boot2-handson]フォルダを選択します。

![idea01.png](https://qiita-image-store.s3.amazonaws.com/0/58650/f6572855-a78b-b018-e833-76b9dca894aa.png)

(3) [Import project from external model]-[Maven]を選択して[Next]を選択します。

![スクリーンショット 2018-07-08 17.05.08.png](https://qiita-image-store.s3.amazonaws.com/0/58650/6c61363a-1ba5-3d1d-21bf-ba704b0278ae.png)

(4) [Search for projects recursively]にチェックを入れて[Next]を選択します。

![スクリーンショット 2018-07-08 17.06.29.png](https://qiita-image-store.s3.amazonaws.com/0/58650/e7c3b2da-addd-1be3-c0fe-0b901024adc3.png)

> 次の(5)の前に下記のような画面が出たら、そのまま[Next]を選択してください。そうすると、(5)の画面になります。

<img width="742" alt="スクリーンショット 2018-12-10 10.32.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/58650/0a6374f7-f1a9-351b-8807-5136df35f85b.png">


(5) [01-spring5]・[02-spring5-answer]・[03-boot2]・[04-boot2-answer]の4つのプロジェクトがすべて表示され、チェックが入っていることを確かめて[Next]を選択します。

> 上記4つのプロジェクトが一覧に表示されていない場合、(2)で選択したフォルダが間違っている可能性があります

![スクリーンショット 2018-07-08 17.19.55.png](https://qiita-image-store.s3.amazonaws.com/0/58650/ab9a00ad-7e31-ce4b-6ec3-1db9342045ed.png)

(6) そのまま[Finish]を選択します。

![スクリーンショット 2018-07-08 17.23.02.png](https://qiita-image-store.s3.amazonaws.com/0/58650/5a08917a-bb90-bd31-39ca-b446607e6429.png)

(7) プロジェクトのインポートが始まります。Maven Centralからライブラリのダウンロードを行うため、しばらく時間がかかります。

<!------------------------------------------------------------------------->
# 解答例の実行確認
(1) 02-spring5-answerプロジェクトのcom.example.Mainクラスにmain()メソッドがあるので、実行してください。

> Eclipseの場合、[Run As]-[Java Application]で実行してください。

(2) コンソールを確認してください。スタックトレースなどが出ておらず、最後に「情報: Starting ProtocolHandler ["http-nio-8080"]」と表示されていれば、組み込みTomcatがポート番号8080で正しく起動しています。

![スクリーンショット 2018-07-08 18.17.35.png](https://qiita-image-store.s3.amazonaws.com/0/58650/2f044fcf-750b-d772-eec6-c680ab823a5e.png)

(3) Webブラウザで http://localhost:8080/sample/ にアクセスします。ログイン画面が表示されるので、メールアドレス `admin@example.com` 、パスワード `admin` でログインしてください。

(4) 下記のように、5人分の顧客情報が表示されれば成功です。

![スクリーンショット 2018-07-08 18.20.43.png](https://qiita-image-store.s3.amazonaws.com/0/58650/6a790dee-e52e-c239-c471-12b9af25bcc3.png)

(5) main()メソッドを停止してください。これで準備手順は以上です。

<!------------------------------------------------------------------------->
# ハンズオンの開始
(1) まずはスライドを一通り読んでください。

(2) 01-spring5/todo-1.mdが演習1の手順です。