0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人学習】boot_two_Spring Boot・アノテーションベースMyBatis全体動作プロセスとバックエンド実行フローのまとめ

0
Posted at

対象ファイル

  • docs/10_SpringBoot_Execution_Flow.md(全体動作プロセスおよびバックエンド実行フロー)

はじめに

これまでに実施した boot_two プロジェクトの各構成要素(ビルド設定、環境設定、メインクラス、DTO、コントローラー、アノテーションベースの MyBatis マッパー)の分析を踏まえ、アプリケーション全体の起動フェーズから実際の Web リクエスト処理フローに至るまでのプロセスを総括して整理した。

XML マッパーを使用せず、Java インターフェース内のアノテーションで直接 SQL を処理する boot_two 固有のアーキテクチャが、Spring Boot、MyBatis、Oracle DB 間でどのように連携してリクエストを処理しているのか、その全体像を明確に把握するための仕様書としてまとめている。


1. 開発環境の準備およびサーバー起動フェーズ(初回 & 起動時の流れ)

ブラウザからリクエストが送信される前に、開発環境(IDE)側でサーバーを立ち上げ、アノテーションベースの MyBatis およびデータベースを接続するプロセスだ。

  1. プロジェクト環境の構築および依存関係ロード (build.gradle)
    • build.gradle に記述されたライブラリ(Spring Web, MyBatis, Oracle JDBC ojdbc11, orai18n, JSPエンジン等)を読み込む。
    • Gradle Refresh を実行し、バックエンド駆動に必要なライブラリを自動ダウンロードして適用する。
  2. バックエンド & DB 環境設定情報の定義 (application.properties)
    • Oracle DB 接続情報(URL、アカウント、パスワード)および View Resolver 設定(prefix/suffix)を定義する。
    • コントローラーが返却する View ファイル名の前後に付与するプレフィックス(prefix=/WEB-INF/views/)とサフィックス(suffix=.jsp)を事前に定義する。
  3. サーバー起動および Bean 登録(Boot Dashboard)
    • Boot Dashboard で boot_two の起動(Start)を実行すると、内蔵 Tomcat サーバーが立ち上がる。
    • 起動時、@SpringBootApplication スキャン範囲内の @Controller、@Mapper インターフェース等を自動検出し、Spring IoC コンテナに Bean として登録し、アノテーションベースの MyBatis プロキシオブジェクトを動的に生成する。

2. Webブラウザリクエスト処理フロー(リアルタイム動作順序)

ブラウザのアドレスバーにリクエストを入力して送信した際に内部で実行されるバックエンドデータ処理フローだ。

[1. Webブラウザ] ---> (リクエスト: /test) ---> [2. MemberController / TestController]
|
(マッパーメソッド呼び出し: getMemberList)
v
[5. 画面描画] <--- (JSPレンダリング) <--- [4. Oracle DB] <--- [3. MemberDaoMapper (@Select)]
(member_name) (Annotation SQL -> MemberDto)

  1. ユーザーからのリクエスト(Request)
    • ブラウザのアドレスバーにリクエスト URL を入力して送信する。
  2. コントローラーによるマッピング受信 (MemberController.java / TestController.java)
    • Spring Boot の DispatcherServlet がマッピングアノテーションを確認し、対応するコントローラーメソッドを実行する。
    • @Autowired で注入された MemberDaoMapper の抽象メソッドを呼び出す。
  3. Mapper インターフェース & アノテーション SQL 実行 (MemberDaoMapper.java)
    • XML マッパーファイルを使わず、MemberDaoMapper 内の @Select アノテーションに記述された SQL を直接取得する。
    • application.properties に設定された DB 情報および ojdbc11 ドライバを通じて Oracle DB(member_name テーブル)へアクセスして SQL を実行し、orai18n がエンコーディングを安全に処理する。
  4. DB データマッピングおよび Model 保持 (MemberDto.java)
    • 取得されたデータが MemberDto オブジェクト単位で自動マッピングされ、List<MemberDto> 形式で返却される。
    • コントローラーがデータを Model(HttpServletRequest)に保持させた後、論理 View 名を返却する。
  5. JSP ファイル結合およびレスポンス出力
    • 設定に基づき物理 JSP パスが組み立てられる。
    • 保持されたデータを基に JSP が HTML へレンダリングされ、ブラウザ画面上に最終出力される。

3. 主要要素の役割整理

構成要素 実際の役割 レストランでの比喩
MemberController リクエストを受信し、全体のデータフローを制御 注文を受け取り料理全体を統括する 支配人(マネージャー)
MemberDaoMapper 別途 XML を持たず、アノテーションで直接 DB へアクセスする永続層 自分の頭の中に直接レシピを記憶して調理する 熟練料理長
MemberDto 各層間でデータを保持して伝送する専用オブジェクト 食材や料理を安全に乗せる お盆(トレー)
Oracle DB 会員情報データが保管されているデータベース 各種食材が保管されている 新鮮倉庫
application.properties DB 接続情報および View パスなどの全体設定を管理 運営ルールやレシピが書かれた 運営マニュアル

今回学んだこと

  • boot_two プロジェクトにおけるアノテーションベース MyBatis の仕組みと、サーバー起動からリクエスト処理に至るまでのバックエンド全体挙動を体系的に総括できた
  • 各コンポーネントが果たす役割とデータ流の仕組みを改めて明確に把握することができた
  • これまでの詳細なファイル分析と全体のプロセス整理を土台として、次の発展的な開発や実務応用へスムーズにつなげていきたい。
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?