🌟

Re:ゼロから始めるSpring Boot実践#1 WebBlog開発#0 開発準備

に公開

要件(必要な機能)

まずウェブブログに必要な機能について考えてまとめる。

  1. ユーザ
    1.1 新規登録
    1.2 ログイン
    1.3 ユーザ情報取得
    1.4ユーザ情報更新
    1.5 アバター画像変更
    1.6 パスワード変更
  2. 記事カテゴリ
    2.1 記事のカテゴリ一覧取得
    2.2 記事のカテゴリ追加
    2.3 記事のカテゴリ更新
    2.4 記事のカテゴリ詳細取得
    2.5 記事のカテゴリ削除
  3. 記事管理
    3.1 記事新規追加
    3.2 記事更新
    3.3 記事の詳細情報取得
    3.4 記事の削除
    3.5 記事一覧取得

アーキテクチャ

SPA(Single Page Application) アーキテクチャを使う。
フロント:Vue ※後日キャッチアップする予定。
パックエンド:Spring Boot + MySQL
今回の目的はSpring Bootの復習・再学習なので、バックエンドの開発に専念する。

開発環境のセットアップ

開発環境のセットアップは下図通り

  1. データベーステーブルを準備

2.Spring Bootプロジェクトを作成し、必要な依存関係(Web、MyBatis、MySQLドライバ)を導入

  • (1).Intellij ideで下図通りにプロジェクトを作成

/src/main/resouce/application.ymlを作成
/src/main/resouceディレクターを作成し、その配下にapplication.ymlファイルを作成する。

  • (2). pom.xmlファイルに依存性パッケージを追加

    • a. 親POM(Project Object Model)の設定 ※POMはMavenのプロジェクト設定ファイルのこと。
      下記をpom.xmlファイルに追記する。Mavenでは、pom.xmlファイルで親子関係を作ることができる。子プロジェクトは、親プロジェクトから、ビルド設定や依存ライブラリのバージョン管理などを「引き継ぐ」ことができる。
      つまり、Spring Bootプロジェクトのビルド・依存管理を簡単にするために親プロジェクトを設定する。
    <!--親POMの設定-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.4.5</version>
    </parent>
    
    • b. dependencyを追加
      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <dependency>
          <groupId>org.mybatis.spring.boot</groupId>
          <artifactId>mybatis-spring-boot-starter</artifactId>
          <version>3.0.3</version>
        </dependency>
    
        <dependency>
          <groupId>com.mysql</groupId>
          <artifactId>mysql-connector-j</artifactId>
        </dependency>
      </dependencies>
    
  • (3). 設定ファイルapplication.ymlにMyBatisの設定情報を追加

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/rezerosb_webblog
    username: XXXX
    password: XXXX
  • (4). パッケージ構成を作成し、エンティティクラスを準備
パッケージ 役割
controller クライアント(ブラウザやアプリ)からのリクエストを受け取る担当。APIの入り口になる。例えば「HTTPリクエストを受ける」「レスポンスを返す」など。
mapper データベースとやり取りする担当。SQLを書くか、MyBatisなどでDB操作をする。
pojo "Plain Old Java Object" の略。主にデータの入れ物(エンティティ、DTOなど)を定義する。例えば、データベースの1行を表現するクラスなど。
service ビジネスロジック担当。「リクエストされた操作の本体」をここに書く。たとえば、商品を購入する、ユーザーを登録する、といった具体的な処理。
service.impl serviceのインタフェースを実装するクラスを置く。たとえばUserServiceインタフェースの具体的な中身(UserServiceImplなど)を書く場所。
utils 共通の便利機能をまとめる場所。たとえば、日付変換・文字列操作・暗号化処理など、いろいろな場所から使い回す小さい処理群。

最後に、スタータークラスを設定する。
スタータークラス名はプロジェクト名+Applicationという名にするのが一般的。
さらにSpring Bootのエントリーポイント(アプリの起動クラス)を作成。

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

環境チェック

スタータークラスを実行し、Tomcatは問題なく起動したのを確認できた。

開発環境をセットアップできたので、これからAPIを開発していく。頑張るぞ。

Discussion