STSとSpringBootとGradleでHelloworld

STSでSpringBootプロジェクトを作成、HelloWorldの表示まで。

いざプロジェクト作ってみたはいいけどいっぱいファイルある...
どれいじったらいいかわからん..
けどとりあえず動かしてみたい!!!って方（そんな方ぼくの他にいますか？）向けです。

環境構築除けばHelloWorldまで10分~15分くらい(目安)
#環境構築
##STSのインストール
以下のサイトを参考にしてみてください。
[・STS(spring-tool-suite)インストール](https://www.searchman.info/java_eclipse/1110.html)

##STSをインストールしたらGradleのプラグインを入れよう
STSはGradleが標準搭載されていないので、Gradleのプラグインを入れましょう。
まずSTSを起動します。
画面上部から\<Help>→\<Eclipse Marketplace...>でbuildshipと検索します。
一番上に出てくるBuildship Gradle Integrationをインストールしましょう。
<img width="519" alt="スクリーンショット 2019-10-21 23.43.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505459/eda6ee62-e6de-7ac7-1765-b6e460652bc9.png">

#いざプロジェクトの作成
STSを起動しましょう。
画面上部から、\<File>→\<New>→\<Spring Starter Project>を選択。
以下のように設定したらnext。
<img width="544" alt="スクリーンショット 2019-10-21 23.53.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505459/98553f19-21d4-bae6-6ae1-cd4fa11a53df.png">
次のような設定画面が現れますが、今回はFrequently Usedにすべてチェックを入れてFinish。
(今回はHelloWorldの表示のみですが、データベースを用いることのほうが多いと思われるのでMySQL Driver等にもチェックを入れています。)
<img width="548" alt="スクリーンショット 2019-10-21 23.58.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505459/2b4cfcca-7899-0654-410f-f78909ca5756.png">

#プロジェクトの実行(この段階ではまだエラーが出ます)
Package Explorerでプロジェクトのフォルダ(Hello)を右クリック、\<Run As>→\<Spring Boot App>で実行し、Consoleを確認。以下のようになります。
<img width="1390" alt="スクリーンショット 2019-10-22 0.08.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505459/93a7e0e9-84c2-890a-b05a-1e79c292ab40.png">
classパスを通せと言われますが、今回はデータベースを用いるわけではなくwebの実装がとりあえずできれば良いので別の方法でエラーを回避します。
#エラーの回避
src/main/java内のHelloApplication.javaは初期では以下のようになっています。

```java:HelloApplication.java
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloApplication {

	public static void main(String[] args) {
		SpringApplication.run(HelloApplication.class, args);
	}

}
```

これに下記を付け加え、

```java
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })
```

以下のようにすればOKです。
(@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })のアノテーションを書き込めば自動でimportしてくれます。)

```java:HelloApplication.java
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })
public class HelloApplication {

	public static void main(String[] args) {
		SpringApplication.run(HelloApplication.class, args);
	}

}
```

詳しく知りたい方は以下のサイトを参照してください。
[・spring-bootの起動エラー(dbアクセスに失敗か)](https://ja.stackoverflow.com/questions/48348/spring-boot%E3%81%AE%E8%B5%B7%E5%8B%95%E3%82%A8%E3%83%A9%E3%83%BCdb%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%AB%E5%A4%B1%E6%95%97%E3%81%8B)
#こんどこそプロジェクトの実行(再)
コンソールに以下のように表示されれば成功です。
<img width="1389" alt="スクリーンショット 2019-10-22 0.23.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505459/45676291-987a-36d0-a295-9728f48ab24c.png">

#HelloWorldしてみる
##Controllerクラスの用意
HelloApplication.javaと同じフォルダにHelloController.javaを作成します。
Package Explorerからsrc/main/javaのフォルダを右クリックしてNewからclassを選択し、以下のように設定すればOK.
<img width="530" alt="スクリーンショット 2019-10-22 0.40.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505459/92c8952d-687d-4e32-1722-102a806b2fbe.png">
以下のようなファイルができているはずなので

```java:HelloController.java
package com.example.demo;

public class HelloController {

}
```

以下のように編集します。

```java:HelloController.java
package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
	
	@RequestMapping("/")
	public String index() {
		return "index";
	}
}

```
##index.html(テンプレートファイルの作成)
HelloController.javaによって呼び出されるindex.javaを用意します。
Package Explorerからsrc/main/resources内のtemplatesを右クリック。
NewからOthers...を選択、WebからHTML Fileを選択し、next。
File nameをindex.htmlとし、Finishで作成完了。
作成したindex.htmlを以下のように編集してあげます。

```html:index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<meta http-equiv="Content-Type"
	content="text/html; "charset="UTF-8">
	<title>STSでHello World</title>
</head>
<body>
Hello STS!
</body>
</html>
```

#index.htmlにアクセスしよう(Helloworldしよう)
[http://localhost:8080](http://localhost:8080)
にアクセスして以下のように表示されれば成功です。
<img width="1322" alt="スクリーンショット 2019-10-22 1.02.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505459/4e871383-f902-0db0-34c4-8b1d36e79007.png">


以上です。
近いうちに今回扱わなかったデータベース周りをいじってみようと思うので、
またそこらへんについてかけることがあれば書こうと思います。

なにか普通でない点があればコメントいただけると嬉しいです。

読んでくださってありがとうございました。

#参考図書
[・Spring Boot 2 プログラミング入門](https://www.amazon.co.jp/Spring-Boot-2-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798053473)(Chapter4まで)