EclipseでSpringBootプロジェクトを作成する（gradle編）

#SpringBootのプロジェクトを作成方法はたくさんある。
今回はEclipseでSpringBoot-Gradle作成編を紹介します。

他の作成方法もあります。
* [gradleプロジェクト作成からWebアプリ起動まで](https://qiita.com/j-work/items/c4c3dcf096b8aadde085)


#0. 目次
* [1.Eclipseでプロジェクトを作成する](#1eclipseでプロジェクトを作成する)
* [2.HelloWorldが表示されるように実装](#2helloworldが表示されるように実装)
* [3.動かしてみる](#3動かしてみる)
* [4.Thymeleafを使用してみる](#4thymeleafを使用してみる) 

#1.Eclipseでプロジェクトを作成する
####1-1. Eclipseを開き、右クリックメニューから「新規」->「プロジェクト」を選択します。
![Eclipse_Spring_No-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/5dc2404b-9217-d33f-5f8e-1ac851630cd7.png)
####1-2. 「SpringBoot」->「Springスタータープロジェクト」を選択し、パッケージ情報を入力します。
![Eclipse_Spring_No-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/59f1ef22-6d0c-b176-e075-3e687786eff5.png)![Eclipse_Spring_No-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/b6a8d493-2bae-2b05-58c2-e1339f3af26a.png)


####1-3. 依存関係を選択します。
※あとで追加できるので、ここでは省略して完了します。選択した内容はbuild.gradleに反映されます。
![Eclipse_Spring_No-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/bbff2703-4571-46ac-aa18-10d2f1aa2403.png)![Eclipse_Spring_No-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/54a87086-2412-0ed3-e908-3378a98f631a.png)

####1-4. プロジェクトが作成されます。
![Eclipse_Spring_No-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/039a6f4b-b95b-6e41-b6a5-a062f765ddb4.png)


#2.HelloWorldが表示されるように実装
####2-1. コントローラーを作成する。

```java:FrontController.java
package com.example.demo.controller;
@RestController
public class FrontController {
	@RequestMapping({ "/", "/index" })
	public String index() {
		return "Hello World";
	}
}
```
@RestControllerと@RequestMappingでコンパイルエラーが起きた。
####2-2. build.gradleの依存関係に「spring-boot-starter-web」を追加する
```gradle:build.gradle
plugins {
	id 'org.springframework.boot' version '2.2.7.RELEASE'
	id 'io.spring.dependency-management' version '1.0.9.RELEASE'
	id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
	mavenCentral()
}
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}
test {
	useJUnitPlatform()
}
```
コンパイルエラーが解消された。

#3.動かしてみる
####3-1. SpringBootアプリケーションを実行する
![Eclipse_Spring_No-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/65745bcc-ab97-ac5c-529e-2e002002cd3a.png)

####3-2. ブラウザで「localhost:8080」、「localhost:8080/index」にアクセスする。
![Eclipse_Spring_No-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/5be9e94a-2406-f8d8-de3f-9420e3614bc9.png)![Eclipse_Spring_No-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/22166e37-55fe-cecb-a929-f98c5c12e804.png)
「Hello World」が表示された。

#4.Thymeleafを使用してみる
####4-1. build.gradleの依存関係にthymeleafを追加する。
```gradle:build.gradle
plugins {
	id 'org.springframework.boot' version '2.2.7.RELEASE'
	id 'io.spring.dependency-management' version '1.0.9.RELEASE'
	id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
	mavenCentral()
}
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //追加
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}
test {
	useJUnitPlatform()
}
```

####4-2. resources/templatesフォルダにindex.htmlを追加する。
```html:index.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
  <head>
  	<title>index</title>
  </head>
  <body>
  	HELLO WORLD
  </body>
</html>
```
####4-3. Controllerクラスを修正する
* アノテーションを「@RestController」→「@Controller」に変更
* 戻り値をhtmlファイル名（index）に変更する。

```java:FrontController.java
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller              // ←-- 修正
public class FrontController {
	@RequestMapping({ "/", "/index" })
	public String index() {
		return "index";            // ←-- 修正
	}
}
```

####4-5. ブラウザで「localhost:8080」にアクセスする。
![Eclipse_Spring_No-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/7e8892cf-40fa-9aa9-7064-177bd3d197c1.png)