LoginSignup
63
91

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-10-24

内容

  • 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

次回

63
91
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
91