SpringBoot2とLogbackで、リクエストごとにUUIDを自動採番してX-Request-IdとしてログにMDCで埋め込む方法。Filterクラスの用意、Configでの登録、logbackのパターン修正まで手順つきです♪ SpringBoot2の@ControllerAdviceでエラーハンドリングを共通化する方法。HttpStatus単位の独自エラークラス、メッセージ用の定数クラス、Adviceクラス、error.propertiesを用意し、リソースの有無で動作確認します♪ SpringBoot2のLogbackで、環境(プロファイル)ごとにログの出力先やフォーマットを切り替える方法。logback-spring.xmlで環境別のlayout.xmlをincludeする構成と、1ファイルにまとめる書き方も♪
SpringBoot2で独自のmessage.propertiesをロジックから読み込むための設定。読み込み用の設定クラスを用意して呼び出すまでと、ファイル名に言語コードを付けてLocaleごとに出し分ける多言語化まで♪ SpringBoot2のデフォルトのエラーレスポンスはパッケージ情報やエラー詳細が返ってしまい脆弱性の原因に。DefaultErrorAttributesを継承してgetErrorAttributesをOverrideし、独自のエラーレスポンスにする方法です♪ SpringBoot2でJPAを使い、SQLを書かずにテーブル結合(INNER JOIN)してデータを取得する方法。Entityのアノテーションでマッピングし、Repository・Service・Controllerまで実装して動作確認します♪
docker-composeでSchemaSpyを動かし、既存のデータベースからテーブル構造・カラム・PK/FK・ER図のドキュメントを自動生成する方法。プロパティファイルの準備から起動、publicスキーマしか出ない場合の対処まで♪ SpringBootでpostgresqlとspring-data-jpaを入れると起動時に出る「PgConnection.createClob() メソッドはまだ実装されていません」エラーの原因と回避方法。hibernate.propertiesを用意するだけで消えます♪ SpringBoot2のプロジェクトにGradle経由でFlywayを組み込み、DBのパッチ適用を自動化する手順。application.ymlとbuild.gradleの設定、パッチファイルとafterMigrateの用意、flywayCleanでのリセットまで♪ EclipseでSpringBootをデバッグ起動するたびに止まるSilentExitExceptionは、spring-boot-devtoolsの仕様によるもの。設定のJava→Debugで「Suspend execution on uncaught exceptions」のチェックを外せば解決します♪