SpringBoot
TL;DR CGLIBからの題のような警告を抑制する場合、調べた限り以下のような方法があった。 interface化 --add-opens java.base/java.lang=ALL-UNNAMED指定 open化 これら全てに不適切感が有る場合、Kotlinならspringプラグイン経由でall-open対象にする対処法…
状況 Java 21化後、Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK.という警告が出るようになりました。 github.com 当該プロジェクトではMockitoを利用していなかったため…
概要 ResponseEntityにはレスポンスヘッダを設定できる レスポンスヘッダはHttpHeadersに格納するのがおすすめ ResponseEntityはヘッダをMultiValueMapで受け取る HttpHeadersは特化した用途のMultiValueMap 単純追加だと基本的にブラウザ側で無視されるため…
状況 パターン網羅のために大量の呼び出しを行うようなテストを追加した所、java.lang.OutOfMemoryErrorでテストが失敗する状況が生じました。 外形的な挙動としては、テスト関数が1つ終わってもメモリが解放されず、テストが進むにつれメモリ使用量も線形に…
H2データベースを使ってR2DBCのpostAllocate/preReleaseの挙動を確認するためのSpring WebFluxプロジェクトを作成していた所、Cannot determine database's type as ConnectionFactory is not options-capable. To be options-capable, a ConnectionFactory …
以下の記事を書いていて、「DSLContextを使い捨てたら非効率なのでは?」と感じたので、管理方法を考えてみたメモです。 その他の便利要件も含めています。 あくまでメモなので、これがどれ位性能に影響するか等は未検証です。 qiita.com 前提 トランザクシ…
お詫び 過去公開していた記事では、Spring WebFluxで複数リクエストを同時に処理する場合を考慮していませんでした。 JDBC接続 x Spring WebFluxでトランザクション管理をすると壊れる可能性が有るため、やらないことをお勧めします。 「R2DBC接続でトランザ…
TL;DR 自分の場合、Dependency Management PluginによってOkHttpのバージョンが書き換わったことが原因だった com.squareup.okhttp3:okhttp:4.xが期待される所でcom.squareup.okhttp3:okhttp:3.14.9が利用されていた gradleのdependenciesに利用したいバージ…
TL;DR 問題が起きているディレクトリを一旦削除して作り直し、ファイルを配置し直した所解決した 恐らくDbUnit等の不具合ではなかったと思われる 状況 SpringDbUnitでテストを作成していた所、DatabaseSetupアノテーションに設定したファイルがjava.lang.Ill…
TL;DR DB跨ぎの外部キーが絡む状態でDatabseSetupすると、外部キーの元になるinsertがコミットされずにデッドロックが発生する エラーメッセージはCaused by: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded;…
NamedParameterJdbcTemplateに対して発行するクエリで、JSON配列をパラメータとして設定する所で詰まったので、備忘用のメモです。 状況 以下のような処理を行うクエリを作成していました。 select JSON_OVERLAPS(/* テーブルから取得したJSON配列 */, /* パ…
以下のように、「エラー条件を満たした場合、値をメッセージに入れて返す」的な処理をクラス内に実装していたところ、通常では考えられないバグが出てハマりました。 @Null(message = "\${validatedValue}は異常値です。") fun getHoge(): String? = when (c…
内部エラー周りの設計について自分の経験から得た知見をまとめます(なのでセオリーとかアンチパターンとか有れば教えていただけるとありがたいです)。 内部エラーとは基本的に自分で書いてThrowするようなエラーを想定しています。 エラーハンドリングに関…
やりたかったこと vuejs-datepickerでPOSTした日時から、サーバーサイドで日付を取得する 問題の概要 vuejs-datepickerはタイムゾーンまで含めてデータを出力する Jacksonはフォーマット設定をしなければ受け取った日時をGMT基準(=日本時間-9時間)に変換し…
概要はSSIAです。 ここではEntityをデータベースのテーブルそのままのPOJOとします。 原因 ここではis_active_sampleという名前のカラムに対して、isActiveSampleというBoolean/booleanのフィールドを持つEntityを挿入する状況をサンプルとして書きます。Lom…
↓の続きです。 wrongwrong163377.hatenablog.com 記事執筆時点でのプロジェクトリポジトリは以下。 github.com やること フィールド用に名前が半角スペースで2分割できるかをチェックするCustom Validatorを作ります。 深い理解ができていないので、作って動…
↓の続きです。 wrongwrong163377.hatenablog.com Post/Putで受け取った内容をBeanのバリデーション/相関チェックするところまでやります。 この記事の内容が完了した状態のリポジトリは以下。 github.com やること モデルを追加する コントローラーを追加す…
最近黒べこ本(会社のお金で)買いました。サーバーサイドでもKotlinはいいぞ。 今回はKotlinのSpringBootでハロワします。 記事執筆時点でのプロジェクトリポジトリは以下。 github.com やること SpringInitializrでプロジェクトの概形を作る Controllerを…