Spring Boot + JPAのプロジェクトを作成し、ローカルサーバーで起動する。

Keywords

Contents

  • 1. spring initializr
  • 2. IntelliJ IDEAで開く
  • 3. Gradle起動
  • 4. Java起動
  • 5. DockerでMySQLを立ち上げる
  • 6. IntelliJ IdeaのDBクライアント設定
  • 7. schema作成
  • 8. DBの設定
  • 9. Java起動

spring initializr

spring initializrを使用して、土台となるコードベースを作成。

  • Gradle Project
  • Java
  • 2.2.6
  • Jar
  • 14

IntelliJ IDEAで開く

GENERATEボタンをクリックすると、zipファイルがダウンロードされるので、それを解凍し、IntelliJ IDEAで開く。

Gradle起動

下記のエラーが出た場合は、JDKを選択。

ここでJDKを選択する。もしない場合は、JDKを入れておく。 JDKはSDKMAN!でインストールするのがお勧めです。SDKMAN!については、こちらの記事を参考にしてください。

Java起動

ここではデータベースの設定をしていないので、エラーが出る。

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

DockerでMySQLを立ち上げる

下記の情報でmysqlのコンテナを立ち上げる。

コンテナ名: spring-demo-mysql ホストのport: 13306 MySQLのバージョン: 5.7 rootのパスワード: password

docker run --name spring-demo-mysql -e MYSQL_ROOT_PASSWORD=password -p 13306:3306 -d mysql:5.7

IntelliJ IdeaのDBクライアント設定

IntelliJ IdeaのDBクライアントツールから、DockerのMySQLに接続する。

driverが必要な場合はいれる。

schema作成

スキーマ名はdemo、collationはutf8mb4_general_ci

Refresh

テーブル作成

Userテーブルを作っておく。

DBの設定

spring-demo/src/main/resources/application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:13306/demo
spring.datasource.username=root
spring.datasource.password=password

Java起動

今回はエラーは出力されない。

package com.example.springdemo;

import org.springframework.data.domain.AbstractAggregateRoot;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="user")
public class User {
    @Id
    @Column(name="user_id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long userId;
    private String name;

    public Long getUserId() {
        return this.userId;
    }
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public void test(){
        registerEvent(new EventMessage());
    }
}