SpringBootでグループウェアの開発①〜環境構築〜

# 環境構築
先日、久しぶりにSTS4でSpringBootの環境構築した際に、HelloWorldすら出せずにかなり苦戦したので、vscodeで環境を作ることにした。
## 環境
Ubuntu:16.04.6
VSCode:1.41.1(既に入ってる)
Java:Amazon Corretto 11(java8しかないから、今からインストール)
Gradle:5.6.2(既に入ってる)
Docker:18.09.7(既に入ってる)
Docker-Compose:1.8.0(既に入ってる)
MySQL:8.0(Dockerイメージを今からダウンロード)
## Java11のインストールとパス設定
[Amazon Corretto 11](https://docs.aws.amazon.com/ja_jp/corretto/latest/corretto-11-ug/downloads-list.html)でdebファイルをダウンロードして、javaのパスを設定。

~~~
$sudo dpkg -i java-11-amazon-corretto-jdk_11.0.3.7-1_amd64.deb
$sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。

  選択肢    パス                                         優先度  状態
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-amazon-corretto/bin/java   11100003  自動モード
  1            /usr/lib/jvm/java-11-amazon-corretto/bin/java   11100003  手動モード
* 2            /usr/lib/jvm/java-8-oracle/jre/bin/java         1081      手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 0       
update-alternatives: /usr/bin/java (java) を提供するために自動モードで /usr/lib/jvm/java-11-amazon-corretto/bin/java を使います
$java -version
openjdk version "11.0.3" 2019-04-16 LTS
OpenJDK Runtime Environment Corretto-11.0.3.7.1 (build 11.0.3+7-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.3.7.1 (build 11.0.3+7-LTS, mixed mode)
~~~

## Docker-ComposeでMySQLイメージをダウンロード
バージョン3で実行したら怒られたので、バージョン2で実行。

~~~docker-compose.yml
version: '2'

services:

  db:
    image: mysql:8.0
    restart: always
    ports:
      - "3304:3306"
    volumes:
      - ./mysql_volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: test
      MYSQL_PASSWORD: test
~~~

起動確認

~~~
$docker-compose up -d
$docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               
be628a63358d        mysql:8.0           "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        33060/tcp, 0.0.0.0:3304->3306/tcp
~~~

## VScodeでプロジェクト作成
### 拡張機能の追加
以下の拡張機能をインストールする。
・Java Extension Pack
・Spring Boot Extension Pack
・Gradle Language Support
・Lombok Annotation Support for VS Code
### プロジェクト作成
VScodeを起動して、View→Command Palette→Spring Initializr:Generate a Gradle Projectを選択→Javaを選択→パッケージ名入力→プロジェクト名入力→SpringBootのバージョンの選択→Spring Web,lombok,Spring Devtoolsを選択。
### HelloWorldしてみる
DemoApplication.javaと同じ階層にcontrollerフォルダを作成して、その中に以下のLoginController.javaを作成。

~~~java:LoginController.java
package パッケージ名.プロジェクト名.controller;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LoginController {
    // ログイン画面のGET用コントローラー
    @GetMapping("/login")
    public String getLogin(Model model) {
        // HelloWorldを返す
        return "HelloWorld";
    }
}
~~~

htmlを返したい場合はthymeleafなどのテンプレートエンジンを使用する必要があるが、今回はRESTサービスっぽく作ろうと考えているので、テンプレートエンジンは使わない方向で進める。

## 終わりに
次回はDB接続と一つサービスを完成することを目標に作業する。今日から記事更新とgithubへのコミットを頑張る！
[SpringBootでグループウェアの開発②〜DB接続〜](https://qiita.com/r_saiki/items/ecfad81245f6c42df33e)
[GitHub:MyGroupware](https://github.com/RSrepository/MyGroupware)