Springbootでhelloworldを表示（InteliJ利用）

私はプログラミングの勉強を始めてまだ１週間も経ちませんが、メモがわりに投稿します。
少し長い説明になってますが、飛ばしているようなステップは無く、下記の通りにやればできるはずだと思います。

対象読者：

* Javaの超初心者（１ヶ月以内）
* コードの内容は分からないが、とりあえずブラウザ上に「HelloWorld」を表示させてみたい方
* InteliJで下記のYoutubeサイトを見たがよく分からない人

内容に関しては、以下のInteliJが上げているYoutubeサイトの内容ほぼそのままです。
https://www.youtube.com/watch?v=5kOGdZmpSDI

#目次
1.プロジェクトの新規作成
2.Springbootアプリの実行（test）
3.HTTP Responseチェックの作成
4.Spring Controllerの作成
5.ブラウザへのHelloworld表示

#1.プロジェクトの新規作成
##1-1.New Project
InteliJを開き、「New Project」ボタンをクリック
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/99e331a6-7b19-717e-4a36-dfe7dd541f6a.png)

##1-2.Spring Initializr
①「Spring Initializr」を選択
②「Next」ボタンをクリック
※その他の入力値は下記表示画面の通り、デフォルト値にしてます。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/09e2edd0-82e5-18ce-00f5-93e29fbe7efb.png)


##1-3.Spring web
①「web」と入力し検索
②「Spring Web」にチェックを入れる
③「Finish」ボタンを押す
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/72f4a7c5-a56f-d52a-fbc3-efcb6bf25e7b.png)

##1-4.新規プロジェクト作成完了
以下のような画面が出てきます
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/8fdf5e6c-d291-8b8b-a781-b3d28bde0e5d.png)

#2.Springbootアプリの実行（test）
##2-1.ApplicationTests
①「src->test->java->com.example.demo」配下にある、「DemoApplicationTests」をダブルクリックすると、画面右にコードの内容が表示される事を確認します。

②Runボタンを押し、ApplicationTestsを実行します。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/d31595bf-819b-1f01-3160-fc5402551f6f.png)

##2-2.ApplicationTestsの実行結果
コンソール画面に、「Tomcat started on port(s): 8080 (http) with context path ''」と表示されていることを確認します。つまり、Tomcatがポート8080で正常起動しているようなので、ブラウザに表示されるかも次で確認してみます。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/0f6df0d3-5e3e-f40e-3e72-212609f65485.png)

##2-3.ブラウザで確認
ブラウザを開き、「http\://localhost:8080」をタイプしましたが、以下のように「Whitelabel Error Page」で戻ってきてしまいました。このYouTubeによると、springcontrollerが無いのが原因のようですので、以下で作成します。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/331b82af-612c-4451-5ef9-ec2ed2dce785.png)

##2-4.Tomcatを一旦停止
画面右上の■ボタンを押し、Tomcatを停止ます。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/91b384a1-f304-efa1-09b2-75fe6969aa09.png)

#3.HTTP Responseチェックの作成
##3-1.HTTP Responseチェックの作成
HTTP Responseをチェックするクラスを以下のように作成します。
①「com.exmaple.demo」をクリックします。
②「New」をクリックします
③「Java Class」をクリックします。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/89ee5239-0ef3-c030-4ae9-fbb5d0f4f790.png)

##3-2.CheckHTTPResponseクラスの作成
「New Java Class」のウィンドウが表示されるので、「Class」が選択（ハイライト）されていることを確認し、「CheckHTTPResponse」（名前は任意）と入力し、Enterキーを押します。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/e7559eff-e9ef-6b1a-fbeb-6ecd6a118de8.png)

##3-3.CheckHTTPResponseの確認
画面左に「CheckHTTPResponse」クラスが作成されている事と、画面右のサンプルコードができていることを確認。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/0a9d7d08-9ef6-6300-b381-ff35e63d8c64.png)

##3-4.CheckHTTPResponse内にコードを記述
「CheckHTTPResponse」クラス内に、以下のようにコードを記述します。

以下注意点です。

*  下記コード内にimportが6行ありますが、これはその下のアノテーションを入力すると自動的に入力されます。
*  「package com.example.demo;」のpackage以降は初めのプロジェクト作成時に変更した場合は、本例と異なる名前になります。
*  asserEqualsが何故かうまく入力できず、エラー（赤色表示のまま）になってしまうことがあります。対処法はassertEqualsの左にカーソルを持っていき、Macであれば「Option」ボタンをenterキーを同時に押すと赤色表示から白っぽい文字に変わりエラーが消えます（何故だか不明）。


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

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class CheckHTTPResponse {
    @LocalServerPort
    private int port;

    @Autowired
    private TestRestTemplate testRestTemplate;

    @Test
    public void shouldPassIfStringMatches(){
        assertEquals("Hello World from Spring Boot", testRestTemplate.getForObject("http://localhost:" + port + "/", String.class));

    }

}
```

#4.Spring Controllerの作成
##4-1.Spring Controllerの作成
Spring Controllerクラスを以下のように作成します。
①「com.exmaple.demo」をクリックします。
②「New」をクリックします
③「Java Class」をクリックします。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/518df07c-1452-5112-8f1b-44852ce5bd93.png)

##4-2.HelloWorldControllerクラスの作成
「New Java Class」のウィンドウが表示されるので、「Class」が選択（ハイライト）されていることを確認し、「HelloWorldController」（名前は任意）と入力し、Enterキーを押します。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/da16205b-8fea-f483-c327-9a2c06ea7a1d.png)

##4-3.HelloWorldControllerの確認
画面左に「HelloWorldController」クラスが作成されている事と、画面右のサンプルコードができていることを確認。
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/d353771f-fd5c-37c6-ec14-d74726f22993.png)

##4-4.HelloWorldController内にコードを記述
「HelloWorldController」クラス内に、以下のようにコードを記述します。
以下注意点です。

*  下記コード内にimportが2行ありますが、これはその下のアノテーションを入力すると自動的に入力されます。
*  「package com.example.demo;」のpackage以降は初めのプロジェクト作成時に変更した場合は、本例と異なる名前になります。

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

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {

    @RequestMapping
    public String helloWorld(){
        return "Hello World from Spring Boot";
    }

    @RequestMapping("/goodbye")
    public String goodbye(){
        return "Goodbye from Spring boot";
    }

}

```

#5.ブラウザへのHelloworld表示
##5-1.CheckHTTPResponseに移動
「CheckHTTPResponse」クラスを開いてください。
Macであれば下記絵のように「Command」ボタンを押しながら、「E」ボタンを押すと、最近開いたファイルが表示されるので、「CheckHTTPResponse」を選択しEnterキーを押します。
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/54292dcf-4a7b-8c70-5690-20c25f443c5f.png)

##5-2.CheckHTTPResponseの実行
「CheckHTTPResponse」クラスが開いていることを確認し、右上の「Run」ボタンをクリックし、プログラムを実行します。
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/a087b9d2-99bf-f715-ace5-4970518a6f09.png)

##5-3.Tomcat起動の確認
下記絵のように、コンソール画面でTomcatが起動していることを確認します。
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/529768a4-6e3f-79c2-92a9-e97455fa3c1d.png)

##5-4.ブラウザでHelloWorldの確認
先ほど開いたブラウザに戻り、リフレッシュすると下記のように「HelloWorld from Spring boot」が表示されます。
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616269/49d0d11d-38c7-40b7-9ca9-9f33e49e5fcd.png)