Edited at

SpringBoot + JPA + Thymeleafで簡単なCRUDを作る①~HelloWorldまで~

More than 1 year has passed since last update.


内容


  • SpringBootで簡単なCRUDアプリを作る

  • 今回は雛形を作って動作確認まで


雛形作成


SpringInitializrを使う



  • ここでzipを落としてもいいけど今回はSTSプラグインから作成

  • Eclipseの場合STSプラグインはヘルプの中のEclipseマーケットプレイスからダウンロードできる


手順


  • 雛形作成

スクリーンショット 2017-10-25 0.47.15.png


  • サンプルなのでアプリ名はなんでもいい

スクリーンショット 2017-10-25 1.10.13.png


  • ビルドツールはmavenとgradleどちらもよく使われているが今回はmavenを選択


    • 今回作る範囲ではどちらを選んでもさほど変わらない



スクリーンショット 2017-10-25 0.49.26.png


  • 必要なライブラリを選択すると同梱した状態で雛形ができる

  • 今回は以下の5つを選択(後からでも追加可能)


    • Devtools・・・ホットデプロイとかできるようになる

    • JPA・・・JavaとDBをつなぐORMapper

    • H2・・・インメモリのDB

    • Thymeleaf・・・テンプレートエンジン

    • Web・・・エンドポイント(URL)を簡単に作れる




アプリの起動


  • 雛形の生成が終わったらまずは動作確認

  • アプリの起動はBootダッシュボードを使うと便利

スクリーンショット 2017-10-25 0.57.49.png


  • Bootダッシュボードが表示されてない場合は以下の手順で追加できる

スクリーンショット 2017-10-25 22.03.08.png

スクリーンショット 2017-10-25 22.05.08.png


  • 起動するとコンソールにこんな感じの出力がされる

スクリーンショット 2017-10-25 0.59.09.png


  • 最後にstartedと出ていれば正常に起動が完了している

  • アプリの起動は以下のコマンドでターミナル上で実行することもできる


    • mvn spring-boot:run




雛形で生成されたファイルの確認


BaseballApplication.java


src/main/java/com/example/baseball/BaseballApplication.java

package com.example.baseball;

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

@SpringBootApplication
public class BaseballApplication {

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



  • このmainメソッドがアプリのエントリーポイントになり、Springアプリを起動している


application.properties


src/main/resources/application.properties




  • この時点では空のファイル

  • アプリに関する設定を記述する


BaseballApplicationTests.java


src/test/java/com/example/baseball/BaseballApplicationTests.java

package com.example.baseball;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class BaseballApplicationTests {
@Test
public void contextLoads() {
}
}



  • テストコードの雛形

  • テストは以下のメニューから実行できる

スクリーンショット 2017-10-25 1.26.03.png


HelloWorldをブラウザから確認


手順


  • 作るファイルは2つ

  • 1つ目はユーザからのアクセスを受け取ってテンプレートを返すファイル

  • 2つ目はユーザに返すテンプレート


HelloWorld.java



  • com.example.baseballHelloWorld.javaを作成する


src/main/java/com/example/baseball/HelloWorld.java

package com.example.baseball;

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

@Controller // ①
public class HelloWorld {
@GetMapping("/") // ②
public String hello() {
return "hello"; // ③
}
}



  • ①:@ControllerをつけることでこのClassがユーザからのアクセスを受け取ることができる

  • ②:@GetMapping("/")とすると、httpメソッドがGETでURLが/のアクセスがあるとこのメソッドが呼ばれるようになる


    • ()の中のパスは、http://localhost:8080に続く内容を表す

    • 例えば@GetMapping("/users")だとhttp://localhost:8080/usersにマッピングされる



  • ③:src/main/resources/templates/配下のhello.htmlをユーザに返す


    • Stringを返しているだけなのになぜそんな動きをするかというと、このClassに@Controllerがついているから




hello.html



  • src/main/resources/templates/hello.htmlを作成する


src/main/resources/templates/hello.html

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8" />
<title>baseball</title>
</head>
<body>
<h1>HelloWorld</h1>
</body>
</html>


動作確認

スクリーンショット 2017-10-25 1.50.09.png


ホットデプロイ


  • ファイルを追加/修正をアプリを起動した状態で行うと、変更が保存される度に自動的にアプリが再起動される

  • 雛形生成時にdevtoolsを入れたからこのような動きをする

hotreload2.gif


次回