学習内容
|
1. Spring Framework/Spring Boot概要
- Spring Frameworkとは
- Spring Bootとは、Spring Bootのメリット 、Spring Bootのサポート期間
- Spring Boot 3 と Spring Boot 2 の主な違い
2. 超速習DIコンテナ
- DIコンテナとは、Beanとは
- アノテーションによるBean定義
- Java ConfigによるBean定義
- それぞれのBean定義の使い分け
3. Webアプリケーション概要
- Webアプリケーション システム構成
- HTTP、HTTPリクエスト、HTTPレスポンス
4. Spring MVCとThymeleafでHello World
- Spring MVC/Thymeleaf
- コントローラーとViewでHello World
- コントローラーからViewにデータ(現在日時)を渡す
- クライアントからの入力 : リクエストパラメータ
- リクエストパラメータを受け取る
- 応用 : リクエストパラメータをFormクラスで受け取る
- リダイレクト機能の作成
5. Bean Validationによる入力検証
- 基本的な入力検証
- 相関バリデーション
6. 永続化層 Spring Data JPA
- 永続化層とは
- Spring Data JPA
- エンティティクラス、ListCrudRepository、JpaRepository
- Spring Data JPAによる基本DBアクセス(CRUD)
7. もっと Spring Data JPA
- ListPagingAndSortingRepository
- ページネーション/列ソートを利用した検索
- 命名規則ベースのメソッド名を使って条件検索
- 命名規則ベースのメソッド名を使って条件に応じた削除
8. ビジネスロジック層
- ビジネスロジック層とは
- Dependency Injectionとは
- 永続化層との統合
- @Transactionalによるトランザクション管理
- Spring Data JPAリポジトリを利用した更新処理
- JPA EntityManagerの管理下に置かれるエンティティ
- Spring Data JPA : 更新/削除SQLが発行されるタイミング
- コラム:AOPによるトランザクション管理について
- WebアプリケーションでのEntityManagerの生存期間
9. プレゼンテーション層
- プレゼンテーション層とは
- ビジネスロジック層との統合
- コラム : 一覧ページにページネーションを設置 (Server Side Pagination)
- コラム : 静的リソースのキャッシュの制御
10. セッション管理 (例外処理と順番入れ替え)
- HTTPセッションの仕組み
- Spring MVCでのセッション管理
11. 例外処理 アプリケーション例外とエラーページ
- Whitelabel Error Page
- 業務エラーに対応した独自例外クラスとビジネスロジック層での例外処理
- アプリケーションで発生した例外のハンドリング
- @ControllerAdviceを付加した例外ハンドラークラス
- Spring Bootでのエラーページ
12. ファイルアップロード
- MIMEタイプ
- マルチパートタイプ、MultipartFile
- フォーム、コントローラー、サービスクラスの改造
- 登録画面と更新画面にイメージファイルのアップロードを追加
- 詳細表示画面にイメージ表示を追加
13. ※上記スケジュールは予定となり、当日若干前後する可能性がありますのでご了承ください。
付録: (研修では実施しませんが、以下の付録を配布いたします)
- 永続化層 Spring Data JPA 補足
・ Spring Data オーバービュー
・ <参考> Spring Data JPAとSpring Data JDBCの比較(概要)
- Spring Data REST (サンプルコードあり)
・ Spring Data JPAリポジトリをRESTful WebAPIとして公開する
・ RESTful Web Service
・ Spring Data REST
・ HATEOASとHAL
・ リポジトリ リソース
・ 実行確認 全件検索(ページネーション、ソート指定)、1件取得、クエリーメソッド
・ HTTPクライアントツール
・ 実行確認 更新系メソッド (POST/PUT/PATCH/DELETE)
- Spring Data RESTでBean Validationによる入力検証 (サンプルコードあり)
・ Spring Data RESTのイベント
・ イベントリスナーにバリデーターの登録
・ エンティティクラスにBean Validationのアノテーションを付加
・ 動作確認 (POST/PUT/PATCH)
- さらに Spring Data JPA (サンプルコードあり)
・ エンティティ同士を関連させる(@OneToOne/@OneToMany/@ManyToOne/@ManyToMany/@JoinColumn)
・ FetchType と参照エンティティがロードされるタイミング
・ 参照エンティティのカスケード操作 (CascadeType)
・ <参考> Spring Data JDBC版 エンティティの関連 サンプルプログラム
- N+1 SELECT問題とその解決方法 (サンプルコードあり)
・ N+1 SELECT問題
・ Jakarta Persistence query language (JPQL)
・ @Query
・ サンプルアプリケーションから実行確認 (@Query版検索メソッド)
・ JOIN FETCH によるN+1 SELECT問題の解決
・ アプリケーションの実行確認 (N+1 SELECT問題 対策版)
・ コラム : JPQL DISTINCTの解釈 (hibernate 5系までとhibernate 6系の違い)
- レコードクラス (Java16~) (サンプルコードあり)
- ビジネスロジック層 補足 (サンプルコードあり)
・ Spring Data JPAとSpring Data JDBCの比較(詳細)
- 参考 Spring Data JDBC版のWebアプリケーション サンプル
- 参考 Spring Boot2 (Spring Data JPA 2/hibernate 5) 版 アプリケーション サンプル (サンプルコードのみ)
- 永続化層/ビジネスロジック層のテスト (サンプルコードあり)
・ コンテナからBeanを取り出し永続化層/ビジネスロジック層をテストする(@SpringBootTestを使った統合テスト)
・ モック(永続化層)を利用しビジネスロジック層を単体テストする(Mockito @Mock/@InjectMocksを使う)
・ コラム Beanのスパイを使って統合テストをおこなう(@ExtendWith(SpringExtension.class)/@SpyBean)
- プレゼンテーション層のテスト (サンプルコードあり)
・ MVC Test Framework
・ MockMvcを使ってプレゼンテーション層をテストする
・ コラム HtmlUnitを用いたEnd-to-Endテスト
- ログ出力 (サンプルコードあり)
・ ロギングライブラリ
・ ログレベルの種類
・ ログ出力のサンプルコード
・ アプリケーションの実行とログ出力結果 (ログレベル設定なし:デフォルト)
・ ログレベルの設定
- パッケージング・デプロイ・アクセス (サンプルコードあり)
・Spring Initializr : パッケージング Jar/War でのひな型プロジェクトの差分
・<参考> Warファイルをデプロイすると行われる処理
・パッケージング
・アプリケーションサーバーへのデプロイ & Webアプリケーションへのアクセス
※最新でより良い内容をお届けするため、一部の学習項目を予告なく変更する可能性がありますのでご了承ください。
|