対象ファイル
-
docs/10_SpringBoot_Execution_Flow.md(全体動作プロセスおよびバックエンド実行フロー)
はじめに
これまでに実施した boot_two プロジェクトの各構成要素(ビルド設定、環境設定、メインクラス、DTO、コントローラー、アノテーションベースの MyBatis マッパー)の分析を踏まえ、アプリケーション全体の起動フェーズから実際の Web リクエスト処理フローに至るまでのプロセスを総括して整理した。
XML マッパーを使用せず、Java インターフェース内のアノテーションで直接 SQL を処理する boot_two 固有のアーキテクチャが、Spring Boot、MyBatis、Oracle DB 間でどのように連携してリクエストを処理しているのか、その全体像を明確に把握するための仕様書としてまとめている。
1. 開発環境の準備およびサーバー起動フェーズ(初回 & 起動時の流れ)
ブラウザからリクエストが送信される前に、開発環境(IDE)側でサーバーを立ち上げ、アノテーションベースの MyBatis およびデータベースを接続するプロセスだ。
-
プロジェクト環境の構築および依存関係ロード (
build.gradle)-
build.gradleに記述されたライブラリ(Spring Web, MyBatis, Oracle JDBCojdbc11,orai18n, JSPエンジン等)を読み込む。 - Gradle Refresh を実行し、バックエンド駆動に必要なライブラリを自動ダウンロードして適用する。
-
-
バックエンド & DB 環境設定情報の定義 (
application.properties)- Oracle DB 接続情報(URL、アカウント、パスワード)および View Resolver 設定(prefix/suffix)を定義する。
- コントローラーが返却する View ファイル名の前後に付与するプレフィックス(
prefix=/WEB-INF/views/)とサフィックス(suffix=.jsp)を事前に定義する。
-
サーバー起動および Bean 登録(Boot Dashboard)
- Boot Dashboard で
boot_twoの起動(Start)を実行すると、内蔵 Tomcat サーバーが立ち上がる。 - 起動時、
@SpringBootApplicationスキャン範囲内の@Controller、@Mapperインターフェース等を自動検出し、Spring IoC コンテナに Bean として登録し、アノテーションベースの MyBatis プロキシオブジェクトを動的に生成する。
- Boot Dashboard で
2. Webブラウザリクエスト処理フロー(リアルタイム動作順序)
ブラウザのアドレスバーにリクエストを入力して送信した際に内部で実行されるバックエンドデータ処理フローだ。
[1. Webブラウザ] ---> (リクエスト: /test) ---> [2. MemberController / TestController]
|
(マッパーメソッド呼び出し: getMemberList)
v
[5. 画面描画] <--- (JSPレンダリング) <--- [4. Oracle DB] <--- [3. MemberDaoMapper (@Select)]
(member_name) (Annotation SQL -> MemberDto)
-
ユーザーからのリクエスト(Request)
- ブラウザのアドレスバーにリクエスト URL を入力して送信する。
-
コントローラーによるマッピング受信 (
MemberController.java/TestController.java)- Spring Boot の
DispatcherServletがマッピングアノテーションを確認し、対応するコントローラーメソッドを実行する。 -
@Autowiredで注入されたMemberDaoMapperの抽象メソッドを呼び出す。
- Spring Boot の
-
Mapper インターフェース & アノテーション SQL 実行 (
MemberDaoMapper.java)- XML マッパーファイルを使わず、
MemberDaoMapper内の@Selectアノテーションに記述された SQL を直接取得する。 -
application.propertiesに設定された DB 情報およびojdbc11ドライバを通じて Oracle DB(member_nameテーブル)へアクセスして SQL を実行し、orai18nがエンコーディングを安全に処理する。
- XML マッパーファイルを使わず、
-
DB データマッピングおよび Model 保持 (
MemberDto.java)- 取得されたデータが
MemberDtoオブジェクト単位で自動マッピングされ、List<MemberDto>形式で返却される。 - コントローラーがデータを Model(
HttpServletRequest)に保持させた後、論理 View 名を返却する。
- 取得されたデータが
-
JSP ファイル結合およびレスポンス出力
- 設定に基づき物理 JSP パスが組み立てられる。
- 保持されたデータを基に JSP が HTML へレンダリングされ、ブラウザ画面上に最終出力される。
3. 主要要素の役割整理
| 構成要素 | 実際の役割 | レストランでの比喩 |
|---|---|---|
MemberController |
リクエストを受信し、全体のデータフローを制御 | 注文を受け取り料理全体を統括する 支配人(マネージャー) |
MemberDaoMapper |
別途 XML を持たず、アノテーションで直接 DB へアクセスする永続層 | 自分の頭の中に直接レシピを記憶して調理する 熟練料理長 |
MemberDto |
各層間でデータを保持して伝送する専用オブジェクト | 食材や料理を安全に乗せる お盆(トレー) |
Oracle DB |
会員情報データが保管されているデータベース | 各種食材が保管されている 新鮮倉庫 |
application.properties |
DB 接続情報および View パスなどの全体設定を管理 | 運営ルールやレシピが書かれた 運営マニュアル |
今回学んだこと
-
boot_twoプロジェクトにおけるアノテーションベース MyBatis の仕組みと、サーバー起動からリクエスト処理に至るまでのバックエンド全体挙動を体系的に総括できた - 各コンポーネントが果たす役割とデータ流の仕組みを改めて明確に把握することができた
- これまでの詳細なファイル分析と全体のプロセス整理を土台として、次の発展的な開発や実務応用へスムーズにつなげていきたい。