学習・技術検証用デモ — 本システムは実際の銀行サービスではありません。

公開情報をもとに構築した教育目的のシステムです。実在する個人情報・口座情報・機密情報・認証情報等を入力しないでください。

ミニ銀行ACADEMY SYSTEM LEARNING
教材メニュー
学習進捗0 / 134
あと134項目
BEGINNER · 入門COURSE 05 · JAVA / ENTERPRISE DEVELOPMENT

Spring Boot:アプリケーションを組み立てる

Spring BootがHTTPサーバー、設定、依存性注入、JSON変換、ヘルスチェックをどう組み立て、Payment Serviceを起動可能なサービスにしているかを学びます。

02 / 11
JAVA / ENTERPRISE DEVELOPMENT · Java・エンタープライズ開発

Java / Spring Bootを入口に、金融システムのService・Repository・Transaction設計を読む。

先に学ぶ内容 — Prerequisite: ソフトウェア工学 / 銀行システム

学ぶこと — LEARNING GOALS

このページで学ぶこと

  • Spring Bootの自動設定と起動点
  • Beanと依存性注入
  • application.ymlと環境変数の役割

体験34 · JAVA SPRING BOOT(土台を組み立てる)

main()メソッドは、振込の業務処理そのものを実行しているか確かめよう

まずは予想をひと言。本文を読んだ後、教材内の参照元で実際の起動点と設定を確認します。

体験学習 · STEP 1 / 5
  1. 01
    まず予想する — PREDICT

    まずここだけ:思ったことをひと言書く

    Payment Serviceのmain()メソッドは、振込の業務処理そのものを実行していると思いますか?

    正解でなくて大丈夫です。「〜だと思う」から始めてみましょう。

    ヒント1を見る

    main()の中身は何行くらいだと思いますか?

    ヒント2を見る

    ControllerやServiceは誰が生成してつないでいるでしょうか?

    もっと詳しく:この問いで使う専門用語
    • Beanは、Springが生成と寿命を管理するオブジェクトです。
    • 依存性注入は、必要な部品を外から渡してもらう仕組みです。
    • Actuatorは、アプリの状態を観測するための機能です。
まずはひと言だけで大丈夫です。

この後の本文を最後まで読んでから、実際に操作して確かめるステップへ進みます。

日常語で理解する — PLAIN LANGUAGE

まず、ここだけつかむ

1

Spring Bootは、HTTPサーバーやJSON変換、設定、オブジェクトの接続をまとめて準備するアプリケーションの土台です。

2

Controller、Service、Gatewayは必要な相手を自分でnewせず、コンストラクタで受け取ります。Springが設定に従って生成し、つなぎます。

3

接続先やデモ機能はapplication.ymlと環境変数で切り替えます。コードへ環境固有値や強い秘密を埋め込みません。

順番に理解する — DIFFICULT PARTS, STEP BY STEP

難しいポイントを、順番にほどく

専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。

01

Bean

やさしく言うと

Springが生成と寿命を管理するオブジェクトです。

なぜ必要?

構成を一か所で管理し、依存先を差し替えやすくするためです。

Minibankでは

RestClient、PaymentController、PaymentApplicationServiceなどが管理対象です。

02

依存性注入

やさしく言うと

必要な部品を外から渡してもらう仕組みです。

なぜ必要?

クラスが生成方法まで抱えず、自分の責任へ集中できるからです。

Minibankでは

ControllerのコンストラクタへServiceが渡されます。

03

Actuator

やさしく言うと

アプリの状態を観測するための機能です。

なぜ必要?

プロセスが起動しているかを運用から確認するためです。

Minibankでは

/actuator/healthを公開し、詳細は隠します。

発展 — ADVANCEDもっと詳しく確認する最初の学習では読まなくても問題ありません。仕組みをもっと深く理解したい場合に開いてください。

起動点は小さく、組み立てはSpringへ任せる

@SpringBootApplicationは、設定クラス・自動設定・コンポーネント探索の入口です。com.minibank.payment配下のController、Service、Component、Configurationが検出されます。

main()は業務処理を行いません。Springのコンテナを起動し、必要なオブジェクトを生成して接続します。

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

依存性注入で、作る責任と使う責任を分ける

各クラスがnewを連鎖させないため、構成の変更やテスト時の差し替えが容易になります。Payment Serviceはコンストラクタ注入を使い、必要な依存関係を明示しています。

  1. 01SpringがSupabasePropertiesを設定から生成
  2. 02RestClientConfigがRestClientをBeanとして生成
  3. 03SupabaseRpcClientへRestClientとObjectMapperを注入
  4. 04PaymentRpcGatewayへSupabaseRpcClientを注入
  5. 05PaymentApplicationServiceへGatewayを注入
  6. 06PaymentControllerへServiceを注入

設定値と秘密をコードへ埋め込まない

設定用途既定の考え方
server.portPayment Serviceの待受ポート8081
minibank.supabase.rest-urlPostgRESTの入口SUPABASE_URLから構成
publishable-keySupabase Data APIの公開キーservice role鍵は保持しない
demo-otp-display-enabled教材用OTP表示falseでfail-closed

Actuatorは生存確認の入口

Spring Boot ActuatorによりGET /actuator/healthを提供します。詳細情報は外部へ出さない設定です。

healthがUPでも、振込が正しく完了できるとは限りません。本番ではPostgREST到達性、RPC成功率、遅延、DB照合など別の観測が必要です。

体験学習の続き · LEARNING LOOP

ここまで読めましたか?続けて確認してみましょう

BeanとActuatorの考え方を読んだところで、教材内の参照元で実際の起動点と設定を確認し、自分の言葉で説明してみます。

STEP 2〜5 / 5
  1. 02
    仕組みを確かめる — CONCEPT CHECK

    画面操作なしで、仕組みを確かめる

    この仕組みは、Mini Bankの画面には現れません。次のEvidenceとCode Trail、教材本文だけで理解を進めます。

  2. 03
    証拠を確認する — EVIDENCE

    何を見たか、1つずつ確かめる

    Evidence(判断の根拠となる記録)を確認したらチェックします。各項目の「何を見るか」を手がかりにしてください。

    画面を開けない項目は、Source Trail(教材の参照元)と教材の説明で確認できます。失敗を実際に起こす必要はありません。

  3. 04
    コードの処理経路を追う — CODE TRAIL

    コードを書く必要はありません

    ここでは「説明されている仕組みが、実際のMini Bankのどこに実装されているか」を確認します。まずは日本語の役割説明を読み、入力した依頼がどこへ渡るかをつかみましょう。コードの全文を読む必要はありません。

    まずmain()の起動点を見て、次に設定ファイルでActuatorの公開範囲を見ます。起動と業務処理の違いを確かめましょう。

    Spring Bootの起動点。main()が何をしているかを探します。

    services/payment-service/src/main/java/com/minibank/payment/PaymentServiceApplication.java

    ポート・Supabase・Actuator・ログ設定。

    services/payment-service/src/main/resources/application.yml
    教材の参照元を確認する — Source Trail ↓
  4. 05
    自分の言葉で説明する — EXPLAIN

    LEVEL 1 — やさしい説明(まずここだけ)

    なぜmain()は業務処理をせず、Springへの起動命令だけを行うのでしょうか? 短い2文を目安に説明してください。

    日常語だけで完了できます。専門用語の数や正誤を自動採点するものではありません。

    ヒント1を見る

    「起動」と「業務処理」という2つの言葉を使って書いてみましょう。

    ヒント2を見る

    healthがUPであることと、振込が成功することの違いを考えてみましょう。

    もっと詳しく:LEVEL 2 — 専門用語を使った説明(任意)

    Bean、依存性注入、Actuatorの3つを使って、Spring Bootがアプリケーションをどう組み立てるか説明してみましょう。

    挑戦する場合は、上の説明欄に追記できます。追加しなくても完了できます。

    説明の確認ポイント — Checkpoint
    • main()は起動の入口であり業務処理をしないと説明できる
    • healthのUPと業務の正常性は別だと説明できる
予想5文字以上・証拠2項目・説明20文字以上で完了できます。

証拠の確認:0 / 2。LEVEL 2(専門用語での説明)は任意です。

入力はこのブラウザに保存されます。Academy教材の進捗とは別の学習メモです。

理解を確かめる — CHECK YOUR UNDERSTANDING

3問で理解チェック

答えを頭の中で考えてから、各項目を開いて確認してください。

Q1mainメソッドが振込処理を実行しますか?
答え

いいえ。Springを起動し、Controllerなどの部品を組み立てる入口です。

Q2healthがUPなら振込も必ず成功しますか?
答え

いいえ。プロセスの生存確認と、依存先を含む業務処理の正常性は別です。

Q3service role鍵をPayment Serviceへ置いていますか?
答え

置いていません。publishable keyと呼出者のBearer tokenで既存の権限境界を使います。

ここまで読めましたか?

完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。

教材の参照元 — SOURCE TRAIL

根拠と関連教材

CURRENT IMPLEMENTATIONは確認したrepository内の実装です。HISTORICAL IMPLEMENTATIONは導入・修正の履歴で、後続migrationによる再定義があり得ます。RELATED LESSONは教材への案内で、実装の一次Sourceではありません。ASSUMPTIONは仮定、UNKNOWNは未確認を表します。

確認基点: d02eae8914f39cbf06bfe422dc39c71886f82b3e / 2026-09-11。稼働環境への適用確認: UNKNOWN。パス実在の自動検査と、記述した技術的事実の確認は別です。

  • 現在の実装 — CURRENT IMPLEMENTATIONservices/payment-service/src/main/java/com/minibank/payment/PaymentServiceApplication.javamainSpring Bootの起動点
  • 現在の実装 — CURRENT IMPLEMENTATIONservices/payment-service/src/main/java/com/minibank/payment/config/RestClientConfig.javaPostgREST向けRestClientの組み立て
  • 現在の実装 — CURRENT IMPLEMENTATIONservices/payment-service/src/main/resources/application.ymlポート・Supabase・Actuator・ログ設定
  • 現在の実装 — CURRENT IMPLEMENTATIONservices/payment-service/pom.xmlSpring BootとJavaの依存関係