0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【学習記録】Spring Boot3プログラミング入門(書籍)を一周したので学習内容をまとめる【SpringBoot】

0
Posted at

今日のテーマ

最近、秀和システムの
「SpringBoot3プログラミング入門」 を一通り学習し終えました。

ただ、本を読み終えるとよくあるのが

「あれ何章でやったっけ?」「JPAの使い方どうだった?」「WebFluxっていつ使うんだっけ?」

という 知識の断片化問題。

そこでこの記事では、

書籍の内容を整理、個人開発で使う視点で再構成

後から見返すためのまとめとして整理しました。

これから Spring BootでWebアプリを個人開発していく人のための復習記事として書いています。

Chapter1 Spring Boot開発の準備

サーバー開発とSpring Boot

Spring Bootは

  • JavaのWebアプリケーションフレームワーク

  • Springの設定を自動化したもの

特徴

  • 設定が少ない

  • 組み込みサーバー(Tomcat)

  • すぐWebアプリが動く

つまり

  • JavaでWebアプリを最短距離で作るためのフレームワーク

  • Spring Boot CLIとSpring Initializer

  • Spring Bootプロジェクトは主に2つの方法で作れる。

Spring Initializer

一番よく使う方法。

作れるもの

  • Maven / Gradleプロジェクト

  • Spring Bootの基本構成

  • 必要な依存関係

よく使う依存

  • Spring Web

  • Thymeleaf

  • Spring Data JPA

  • H2 / MySQL

Visual Studio Code + Spring Boot Extension Pack

VSCodeでもSpring開発は可能。

主な機能

  • Spring Boot Dashboard

  • プロジェクト生成

  • アプリ起動

  • デバッグ

Java開発では

  • IntelliJ

  • VSCode

のどちらでもOK。

Chapter2 プロジェクトの基本

Spring Bootプロジェクト構成

基本構成

src
  main
      java
         com.example.demo
             controller
             model
             repository
             service
      resources
          templates
          static
          application.properties

役割

ディレクトリ 役割
controller リクエスト処理
model データモデル
repository DBアクセス
service ビジネスロジック
templates HTML

Spring Bootのエントリーポイント

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

役割

  • Springコンテナ起動

  • Bean管理

  • Webサーバー起動

RESTコントローラー

REST APIを作る場合

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(){
        return "Hello Spring Boot";
    }
}

特徴

  • JSONを返す

  • APIサーバー向け

Controller(MVC)

画面表示を行う場合

@Controller
public class PageController {

    @GetMapping("/")
    public String index(){
        return "index";
    }
}

戻り値

templates/index.html

Chapter3 テンプレートエンジン

Spring BootではHTML生成にテンプレートエンジンを使う。

Thymeleaf

Spring Boot標準。

特徴

  • HTMLとしてそのまま読める

  • Springとの統合が強い

<p th:text="${message}"></p>

Mustache

ロジックレステンプレート。

特徴

  • シンプル

  • 学習コスト低い

Groovyテンプレート

Groovyを使ったテンプレート。

ただし実務では

  • Thymeleaf

が圧倒的に多い。

Chapter4 モデルとデータベース

Webアプリ開発の中心。

ここが Spring Bootの最重要部分。

JPAによるDB操作

エンティティ

@Entity
public class Message {

    @Id
    @GeneratedValue
    private Long id;

    private String text;

}
  • JPAのメリット

  • SQLを書かなくてよい

  • ORM

データとオブジェクトの対応

CRUDの作成

Repository

public interface MessageRepository 
    extends JpaRepository<Message, Long> {
}

使えるメソッド

  • save()

  • findById()

  • findAll()

  • delete()

バリデーション

入力チェック

@NotNull
@Size(min = 1, max = 100)
private String text;

Controller

public String save(
    @Valid Message message,
    BindingResult result
)

Chapter5 DBアクセスをさらに理解

JPAのコア機能。

EntityManager

@PersistenceContext
EntityManager entityManager;

使える機能

  • persist

  • remove

  • find

  • query

JPQL

SQLに似たJPA専用クエリ。

SELECT m FROM Message m

特徴

テーブルではなく エンティティ名

Criteria API

Javaコードでクエリを書く方法。

特徴

  • 型安全

  • 動的クエリ

ただし

実務ではあまり人気がない

理由

  • コードが長い

エンティティの関連

代表的なリレーション

@OneToMany
@ManyToOne
@OneToOne
@ManyToMany

@ManyToOne
User user;

Chapter6 リアクティブWebアプリ

Spring Bootには

Spring WebFlux

がある。

従来

Spring MVC

との違い

MVC WebFlux
同期処理 非同期
スレッド占有 少ない
簡単 少し難しい

WebFlux型

Mono
Flux

ファイルアクセスとネットワーク

リアクティブでは

  • 非同期IO

  • ストリーム処理

が可能。

関数型ルーティング

MVC

@Controller

WebFlux

RouterFunction

という書き方もできる。

WebClient

APIアクセス

WebClient client = WebClient.create();

REST API呼び出し用。

Chapter7 Springの重要機能

最後はSpringの基礎概念。


BeanとDI

Springの核心。

Bean

Springが管理するオブジェクト

DI

依存性注入

@Autowired
MessageRepository repository;

メリット

  • 疎結合

  • テストしやすい

  • 管理しやすい


Spring Security

認証機能。

主な用途

  • ログイン

  • ユーザー管理

  • 権限制御

基本設定

@EnableWebSecurity

この本を終えて理解したSpring Boot開発の流れ

Spring BootでWebアプリを作る基本構造は

Controller
   
Service
   
Repository
   
Database

画面系

Controller
   
Thymeleaf

API系

Controller
   
JSON

今後個人開発するなら

個人的に必要な技術スタックはこれ。

基本構成

Spring Boot
Spring MVC
Thymeleaf
Spring Data JPA
MySQL

API型

Spring Boot
REST API
React / Vue

個人的に重要だと思ったポイント

この本で特に重要なのは

① Controller

HTTPリクエスト処理

② JPA

DB操作

③ Thymeleaf

画面表示

④ DI / Bean

Springの設計思想

次に学ぶと良さそうなこと

Spring Bootをもう一段レベルアップするなら

  • Spring Security(ログイン機能)を詳しく

  • REST API設計

  • Docker

  • AWSデプロイ

  • フロントエンド(React / Vue)

まとめ

この本は

Spring Boot Web開発の一通りを触れる入門書

でした。
ここからはインプットした知識を活かして、実際に簡単なアプリケーションを作りながら
理解を深めていこうと思います。

0
1
0

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?