- HOME >
- ポンコツPdM
ポンコツPdM

SIerでの開発・プロジェクト運営の経験をもとに、Java・Springの実装、設計・テスト、チーム開発で役立つ手順をまとめています。
学習と現場をつなぐ
AIによる要約MockMvcのPOSTが403なら、まずCSRFと権限を切り分けます。.with(csrf())を足しても、必要な認証ユーザーや権限がなければ成功しません。400は入力変換やValidationを調べますが、FormのエラーをBindingResultで受ける画面では200で戻る場合があります。Securityを有効にした実行例で、403・401・400・200と登録成功を区別します。 MockMvcはHTTPサーバーを起動せず、DispatcherServletやSpring MVCの仕 ...
AIによる要約N+1問題は、一覧を取得する1本のSQLに加え、各行の関連Entityを読むたびに追加SQLが発行される状態です。件数が少ない開発環境では気づきにくく、本番データで急に遅くなります。SQLログで「似たSELECTがIDを変えて繰り返されていないか」を確認し、その画面で必要な関連だけをJOIN FETCH、@EntityGraph、DTO projectionなどでまとめて取得します。すべてをEAGERへ変える対策は避けます。 Spring Data JPAでは、Entity同士の関連をJav ...
AIによる要約@Serviceと@Repositoryは、どちらも@Componentを土台にしたステレオタイプで、コンポーネントスキャンによりBean登録されます。違いは主に役割の表現です。業務処理はService、DBなどの永続化アクセスはRepository、どちらにも当てはまらない共通部品はComponentを基本にします。Repositoryにはデータアクセス例外変換の対象になる意味もあるため、全部をComponentへ統一しない方が設計意図を伝えられます。 Springのクラスへ@Compon ...
AIによる要約@Controllerは主にThymeleafなどの画面名を返し、@RestControllerは戻り値をレスポンス本文へ書き込みます。RestControllerはControllerとResponseBodyを組み合わせたアノテーションです。HTML画面とJSON APIをクラス単位で分け、HTTPステータスやヘッダーも返したいAPIではResponseEntityを使うと、戻り値の意図が分かりやすくなります。 Spring BootのWeb開発では、@Controllerと@RestC ...
AIによる要約JPAでは、トランザクション内で取得した管理対象Entityを変更すると、コミット時のダーティチェックでUPDATEされます。更新されない場合は、Serviceに有効な@Transactionalがあるか、変更したEntityが管理対象か、readOnlyになっていないか、例外でロールバックしていないかを確認します。saveを追加して隠す前に、取得から変更、コミットまでが同じトランザクションかを追うことが重要です。 Spring Data JPAを使い始めると、Repositoryで取得した ...
AIによる要約Spring Bootでバリデーションメッセージが表示されないときは、まずBindingResultのエラーを確認します。nameにエラーがあっても、Thymeleafのth:errorsが正常なemailを参照すれば、名前の文言は表示されません。この記事では同じ空欄入力で故障版と修正版を比べ、項目名を直すだけで日本語表示が戻ることをMockMvcで確認します。 Spring BootとThymeleafの入力画面では、Formに@NotBlankを付けただけではメッセージは自動表示されませ ...
AIによる要約Spring Bootの400 Bad Requestは、必須パラメータ不足・型変換・JSON読み取り・入力検証のどこで失敗したかを、例外名と送信値から切り分けます。Controllerのブレークポイントに止まらない場合も、Networkで実際の要求を見て、同じ要求のログと照合してください。/orders/abcを送ったときの例外から、修正後の確認まで具体的に追います。 400 Bad Requestは「サーバーへ到達していない」という意味ではありません。Spring MVCまでは届いたもの ...
AIによる要約BigDecimal.equalsは数値だけでなく小数点以下の桁数を表すscaleも比較するため、0.0と0.00はfalseになります。金額などを数値として比較するならcompareToの結果が0かを確認します。ただし、HashSetやHashMapはequalsとhashCodeを使うため、compareToへ置き換えればすべて解決するわけではありません。入力・保存・表示のどこで桁数を統一するかを業務ルールとして決めることが重要です。 販売管理や請求、会計連携などの業務システムでは、小数 ...
AIによる要約Serviceの単体テストではSpring Boot全体を起動せず、JUnit 5とMockitoでRepositoryをモックします。@Mockで依存先を作り、@InjectMocksまたはコンストラクタでServiceへ渡し、戻り値だけでなく保存処理が正しい引数で呼ばれたかも確認します。成功ケース、対象なし、業務ルール違反を分けてテストし、DB制約やトランザクションは結合テストへ任せます。 Spring BootのServiceは、Repositoryからデータを取得し、条件を判定し、更 ...
AIによる要約@RequestParamへ@NotBlankや@Minを付けても効かないときは、Validation依存関係、Springのバージョン、例外の受け取り方を確認します。Spring Framework 6.1以降のSpring MVCにはControllerメソッドの検証機能があり、旧来のAOP方式で使うクラスレベルの@Validatedを外す方が適切な構成もあります。@Validだけでは制約にならず、BindingResultも単純なRequestParam検証の受け皿ではありません。 S ...