IDEA(Com)+SpringBoot+Maven+SpringInitializrでHello Worldなwebアプリを書いてみる

# 経緯
- SpringBoot+MavenでのHelloWorldをIntelliJ IDEAのUltimateエディションで[書いてみた](https://qiita.com/12345/items/96dad7d473c6ec000b81)のと同じことを、Communityエディションで書くとどうなるか[やってみた](https://qiita.com/12345/items/703f83f80d44b278d56f)。の時に、`Spring Initializr`のWebサイト版の存在を知ったので試しにこれを使ってやってみた。

# Webサイト版Spring Initializr
![image.png](https://qiita-image-store.s3.amazonaws.com/0/181011/feb5ae75-9f20-591d-de73-590a14699d85.png)

- https://start.spring.io/
- `Search for dependencies`欄に依存関係の名前を入力すると候補がリスト表示されるので、その中から選択する。すると、選んだものが`Selected dependencies`欄に表示されるので、それを繰り返していく。
- 2文字以上入力すれば候補が表示されるので語尾があいまいでもok。
- 例えば`template`と入力するとテンプレートエンジン系がリストされるなど、カテゴリ？説明？とかでも検索できるっぽい。
- 名前が分からないときは、下部にある`Switch to the full version`をクリックすると、その下に選択可能なすべての依存関係が表示されるのでチェックボックスを付けていけばよい。
- また、GroupId・ArtifactId以外のプロジェクトメタデータをデフォルト以外の値で指定したい場合も、この操作によって入力欄が表示される。
- 指定がすべて終わったら`Generate Project`ボタンを押すと、プロジェクトのzipファイルがダウンロードされる。

# 感想
- Ultimate版のSpring Initializrにやや近い感じで作れる。
    - 依存関係を補完や選択とかで選べる
    - pom.xmlにSpringBoot用の必要な設定を自動的に書いてくれる
    - アプリケーションクラスを自動的に作ってくれる
- でもダウンロードして解凍して開くとかの手間がちょっと微妙か。
- まぁでも最初の一回だけだからいいか。

# 環境
- Windows10 Home
- IntelliJ IDEA Community 2017.2.4
- JDK1.8

あと、使用したSpringBootのバージョンは、この時点でのCURRENT GAの1.5.7

# 手順
## Spring Initializrサイトでプロジェクトを作成
- https://start.spring.io/
- 依存関係で`Web`と`Thymeleaf`を選ぶ。あとはデフォルト
- zipファイルをダウンロードし、好きな場所に解凍

##IDEAを起動する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/181011/0ca8b872-c99e-028b-af1c-5feee8f8ddf1.png)

##プロジェクトを開く
- すでに何らかのプロジェクトが開いていたら、`File` - `Open`...
- プロジェクトが開いていない状態だったら、`Open`をクリック
- `Open File or Project`の画面が開く

![image.png](https://qiita-image-store.s3.amazonaws.com/0/181011/63cbce80-03e0-d973-a49a-fdc69429da18.png)

- 解凍したプロジェクトを指定して`OK`をクリック
- プロジェクトが開く

![image.png](https://qiita-image-store.s3.amazonaws.com/0/181011/fa77cd75-f097-6acf-f23f-253913946ac7.png)

- 画面右下に`Maven projects need to be imported`と表示されていたら、`Enable Auto-Import`をクリックしておくと、pom.xmlを書き換える都度、必要な依存関係を自動的にインポートしてくれる。

## コントローラの作成
- `demo`プロジェクトのツリーの`src` - `main` -
 `java` - `com.example.demo`パッケージを右クリックし、`New` - `Java Class`を選択
- `Name`に`controller.HelloController`と入力し、`OK`をクリック
- クラス宣言の上に`@Controller`アノテーションを追加
- クラスの中に`getHello()`メソッドを追加

```java:
    @GetMapping
    public String getHello() {
        return "hello";
    }
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/181011/6f8a3265-71db-fc0c-a1b3-2cb678eb45d1.png)

## テンプレートの作成
- `demo`プロジェクトツリーの `src` - `main` - `resources` - `templates`フォルダを右クリックし、`New` - `HTML File`を選択
- `Name`に`hello`と入力し、`OK`をクリック
- `<body>`タグに`Hello World!`と書く
- あと、`<meta>`タグがこのままだと実行時にthymeleafのエラー（タグが閉じてないよ！エラー）になるので、末尾を`/>`に書き換える

![image.png](https://qiita-image-store.s3.amazonaws.com/0/181011/7fbe48fb-e764-2a78-252a-dde7bab45e9c.png)

## アプリケーションの起動
- `DemoApplication`アプリケーションクラスを右クリックし、`Run DemoApplication.main()`を選択
- アプリケーションが起動され、コンソールログがつらつらと表示され始める

![image.png](https://qiita-image-store.s3.amazonaws.com/0/181011/3ad3d458-9a38-6eec-5256-1d6874209772.png)

- そのうち`Tomcat started on ...`と表示され、内部のTomcatが起動されたことがわかる
- 最後に`Started DemoApplication in ...`と表示されれば起動完了

## 動作確認
- ブラウザから、`localhost:8080`にアクセスする

![image.png](https://qiita-image-store.s3.amazonaws.com/0/181011/4b455275-bd2c-9a27-b0c7-367c6faee71f.png)

- できた。