Java8のStream APIでListをMapにするとHashMapになって順序が保証されない問題の解決方法。Collectors.toMapの引数にLinkedHashMap::newを渡せば元の並び順を保てます。TreeMapではダメな理由も♪
Hibernate5でDBのスネークケースのカラムをEntityのキャメルケースのフィールドに自動でマッピングする方法。廃止されたImprovedNamingStrategyの代わりにPhysicalNamingStrategyStandardImplを継承して設定します♪
PlayFramework2.7で自作のBeanValidatorのエラーメッセージをscalaテンプレートから取得しようとするとAbstractNestablePropertyAccessorでエラーになる原因。Formモデルにフィールドを定義すれば回避できます♪
Javaのバージョンをコマンド一つで切り替えられる「jenv」の導入方法。anyenv経由でのインストール、環境変数の設定、caskroom/versionsでJava8とJava11のJDKをダウンロード、jenvへの追加、globalとlocalでの切り替えまで♪
pyenvやnodenvなどのバージョン管理ツールをまとめて扱える「anyenv」をHomebrewで導入する方法。環境変数の設定、init、nodenvのインストール、対象バージョンの適用まで。fish shellでの注意点も♪
SpringBoot2でJUnitに代わるテストフレームワーク「Spock」を使ってコントローラーのユニットテストを書く方法。依存関係の追加、テストクラスの作成と要点の解説、実行、HTMLのエラーレポートまで。TDD入門に♪
EclipseでSpringBootのリモートデバッグを行う方法。Debug ConfigurationsでRemote Java Applicationをポート5005で作成し、デバッグ用オプションで起動したアプリにアタッチします。Dockerで動かしていても使えます♪
SpringBoot2でリクエストの処理時間(latency)をログに出力する方法。AbstractRequestLoggingFilterを継承したクラスを実装してBean登録するだけで、ミリ秒単位の所要時間が出ます。パフォーマンス改善に♪
SpringBoot2でリクエストのヘッダーやボディをログに出力する方法。CommonsRequestLoggingFilterをConfigクラスで@Bean登録し、application.ymlでDEBUGレベルを有効にするだけ。GETとPOSTでの出力例つき♪
SpringBoot2のLogbackのログをlogback-json-classicでJson形式にする方法。build.gradleへの依存追加とlogback-spring.xmlの修正を、標準出力の場合とAWS CloudWatch Logsの場合に分けてご紹介♪