CLOVER🍀

That was when it all began.

Spring

Spring Test × Database Riderで、データを作成する時にテーブル間の依存関係を記録する

これは、なにをしたくて書いたもの? こちらのエントリーで、Database Riderをデフォルト設定で使う時に外部キーがたくさん使われているデータベースを対象にすると、 時間がかかるということを書きました。 Database Riderで、外部キーを大量に使っているデ…

Database Riderで、外部キーを大量に使っているデータベースを対象にすると実行が遅くなるという話

これは、なにをしたくて書いたもの? Javaでデータベースを使うテストで、Database Riderが便利なのでちょいちょいと使うのですが。 外部キーをたくさん使っていると実行が遅くなるという問題に悩まされたことがあったので、メモしておきます。 @DataSetのus…

OpenAPI Generator × Spring Web MVCでファイルをダウンロードするREST APIを作成したい

これは、なにをしたくて書いたもの? OpenAPI Generatorで生成したREST APIで、ファイルダウンロードのような機能を作るにはどうしたらいいのかな?ということで ちょっと試してみました。 OpenAPIでバイナリを扱うメディアを定義する ファイルダウンロード…

Spring Boot Actuator × Micrometer Tracing × OpenTelemetryでトレーシング

これは、なにをしたくて書いたもの? Spring BootでOpenTelemetryを扱ってみようかなと思って調べてみると、トレーシングまわりの事情がいろいろ変わっているようなので いい機会だなと思って試してみることにしました。 Spring Cloud Sleuth Springを使った…

Spring BootでApache TomcatのStuckThreadDetectionValveを使う

これは、なにをしたくて書いたもの? Apache Tomcatが提供しているValveに、StuckThreadDetectionValveというものがあります。 こちらを使うと、リクエストを受け取ってからStuckThreadDetectionValveに指定した時間(秒数)が経過した際に、スレッドが スタ…

Spring TestとMockito(MockBean)を合わせて使った時の挙動を確認する

これは、なにをしたくて書いたもの? Spring Bootのテスト機能を使うと、Mockitoと簡単に組み合わせられるようになります。 こちらを使った時の動作を、ちゃんと見ておきたいなと思いまして。 Spring BootとMockito Spring BootのMockitoに関するドキュメン…

Spring Bootのテストで標準出力をキャプチャーする(OutputCapture/OutputCaptureExtension)

これは、なにをしたくて書いたもの? Spring Bootを使ったアプリケーションのテストで、ログ出力した内容を確認するには?ということで。 調べてみるとOutputCaptureというものがあったので、こちらを使ってみます。 OutputCapture OutputCaptureは、JUnitの…

QuartzのSchedulerのシャットダウンを始めた時の、実行中のジョブの扱いを確認してみる

これは、なにをしたくて書いたもの? 以前Quartzについて調べた時に、Scheduler#shutdownを呼び出す際に引数があるものを使い、かつtrueに設定すると実行中のジョブが ある場合は、ジョブが終了するまで待機するということを書きました。 Javaのジョブスケジ…

Spring FrameworkのTransactionSynchronizationを試す

これは、なにをしたくて書いたもの? Spring Frameworkで、トランザクションの完了時に処理を行うことができるTransactionSynchronizationというものがあります。 存在は知っていたものの、ちゃんと使ったことがなかったので今回試してみることにしました。 …

Database RiderとSpring Frameworkを合わせて使う時に、DirtiesContextを使う場合はcacheConnectionを無効にした方がよいという話

これは、なにをしたくて書いたもの? Database RiderとSpring Boot(Spring Framework)を合わせて使っていて、@DirtiesContextアノテーションを使うと途端にテストが 失敗するようになってハマったのでメモ。 どういうことか? Mockitoを使った時など、Spri…

Database RiderをSpring Framework(Spring Boot)と合わせて使う時に、Rider JUnit 5とRider Springのどちらを使うか?

これは、なにをしたくて書いたもの? 以前、こんなエントリーを書きました。 Database RiderをSpring Framework(Spring Boot)と合わせて使う - CLOVER Spring Framework 5以降であれば、rider-junit5を使うのがよいのだろうと思ったのですが、ちょっと気に…

Spring TestのTestExecutionListenerを試す

これは、なにをしたくて書いたもの? タイトルどおり、Spring TestのTestExecutionListenerというものを試してみようかなと思いまして。 Spring TestのTestExecutionListener TestExecutionListenerはSpring TestContext Frameworkの一部で、テスト実行時の…

OpenAPI Generatorを使って生成するSpring Web MVCのソースコードに、独自にバリデーションを追加したい

これは、なにをしたくて書いたもの? OpenAPIを使ってREST APIを定義した時に、requiredや文字列長、範囲についての記述をしておくと、OpenAPI Generatorを使って 自動生成した時にある程度バリデーションの定義も生成してくれます。 OpenAPI Specification …

Jacksonで、オブジェクトをシリアライズする際にnullのプロパティを出力しないようにする

これは、なにをしたくて書いたもの? Jacksonを使ってオブジェクトをJSONにシリアライズする際に、nullのプロパティの出力は抑制したくなることがあります。 JSONにした時に、以下のような状態を { "property1": "value1", "property2": null } こうする、と…

REST AssuredをSpring Boot 3.0で使う

これは、なにをしたくて書いたもの? REST Assuredが5.1.0でSpring Boot 3.0に対応したようなので、REST AssuredとSpring Frameworkの組み合わせの確認を含めて 試してみることにしました。 https://github.com/rest-assured/rest-assured/blob/rest-assured…

Database RiderをSpring Framework(Spring Boot)と合わせて使う

これは、なにをしたくて書いたもの? 前に、Database Riderに関するエントリーを書いたことがあります。 Database Riderを試してみる - CLOVER Database RiderにはSpring Framework(Spring Boot)と組み合わせて使う機能があるようなので、試してみました。…

OpenAPI Generatorを使って、Spring Web MVCのエンドポイントを生成する

これは、なにをしたくて書いたもの? OpenAPI Generatorを使って、OpenAPIの定義ファイルからSpring Web MVCのエンドポイントを生成してみようかな、ということで。 OpenAPI Generator OpenAPI Generatorは、OpenAPIの定義ファイルからクライアントやサーバ…

Spring BootでQuartzを使ってみる

これは、なにをしたくて書いたもの? Spring Boot(とSpring Framework)に、Quartzとの連携機能があるので、試してみようということで。 Spring Boot、Spring FrameworkとQuartz Spring BootおよびSpring Frameworkの、Quartzとの連携については以下に記載…

Amazon SQSにメッセージを送受信するアプリケーションをSpring Bootで書いてみる(AWS SDK for Java v2、LocalStack利用)

これは、なにをしたくて書いたもの? 前に、Amazon SQS(といってもLocalStack上のものですが)を使ってFIFOキューを試してみました。 LocalStackでAmazon SQSのFIFOキューを試してみる(AWS SDK for Javaを使用) - CLOVER 今回は、常駐アプリケーションと…

Spring Statemachineのチョイス/ジャンクションを試してみる

これは、なにをしたくて書いたもの? 最近Spring Statemachineに関する勉強をちょっとずつしていましたが、そろそろこれでひと区切りにしようかなと思います。 今回は、チョイスとジャンクションを扱ってみます。 チョイス/ジャンクション チョイスとジャン…

Spring Statemachineのガードを試してみる

これは、なにをしたくて書いたもの? Spring Statemachineの、ガードというものを試してみたいなということで。 ガード ガードについては、用語集に以下のように記載されています。 A boolean expression evaluated dynamically based on the value of exten…

Spring SecurityのOAuth 2.0サポートで、Keycloak 19.0からログアウトする

これは、なにをしたくて書いたもの? ここまでSpring SecurityのOAuth 2.0サポートとKeycloak 19.0を使っていて、ログアウトをかなり適当にしていました。 こんな感じに、ログアウト用のURLとログアウト後に表示するURLを設定していただけですね。 @EnableWe…

Spring Statemachineのタイマートリガーを使ってみる

これは、なにをしたくて書いたもの? Spring Statemachineのトリガーには、イベントとタイマーの2種類があります。 これまでSpring Statemachineを使ってきた時にはイベントトリガーしか扱ってこなかったので、タイマートリガーを試してみたいなと思います。…

Spring SecurityのOAuth 2.0サポートで、Keycloak 19.0のRealmロールを使った認可を試す

これは、なにをしたくて書いたもの? 前に、Spring SecurityでKeycloakのクライアントスコープを使った認可を試してみました。 Spring SecurityのOAuth 2.0サポートで、Keycloak 19.0のクライアントスコープを使った認可を試す - CLOVER 今度は、Realmロール…

Spring Statemachineのアクションを試す

これは、なにをしたくて書いたもの? 以前に、Spring Statemachineをとりあえず動かしてみました。 Spring Statemachineを試してみる - CLOVER 今回は、「アクション」というものを扱ってみたいと思います。 Spring Statemachineにおけるアクション アクショ…

Spring SecurityのOAuth 2.0サポートで、Keycloak 19.0のクライアントスコープを使った認可を試す

これは、なにをしたくて書いたもの? 前に、Spring SecurityのOAuth 2.0サポートを使って認証を試してみました。 Spring SecurityのOAuth 2.0サポートでKeycloak 19.0を使った認証を試す - CLOVER 今度は、クライアントスコープを使った認可を簡単に試してみ…

Spring SecurityのOAuth 2.0サポートでKeycloak 19.0を使った認証を試す

これは、なにをしたくて書いたもの? 先日、WildFlyベースからQuarkusベースになったKeycloakをインストールしてKeycloak自体にログインするところまでやってみました。 Ubuntu Linux 20.04 LTSにKeycloak 19.0をインストールする - CLOVER 今回は、Spring S…

Spring Statemachineを試してみる

これは、なにをしたくて書いたもの? 少し、ステートマシンについて調べる機会がありまして。 Spring Statemachine Spring Statemachineのプロジェクトページは、こちら。 Spring Statemachine Spring Statemachineの現在のバージョンは3.2.0で、ドキュメン…

Spring BatchでItemProcessorを複数適用してみる

これは、なにをしたくて書いたもの? Spring Batchで、複数のItemProcessorを使うパターンをちょっと試しておこうかなと。 CompositeItemProcessor 結論を言うと、CompositeItemProcessorを使うことになります。 ドキュメントとしてはこちらに載っています。…

Spring BatchのトランザクションがRuntimeExceptionでもException(検査例外)でもロールバックすることを確認する

これは、なにをしたくて書いたもの? Spring Frameworkでのトランザクション管理といえば、宣言的トランザクションを使うことが多いでしょう。 Data Access / Transaction Management / Declarative Transaction Management 一方で、宣言的トランザクション…