spring-boot

GradleでSpring Bootをビルドしたときのjarファイル

Spring Boot 2.5からGradleでビルドすると *.jar と *-plain.jar の2つが生成されるようになったので、これらについてのメモ。 Demo Spring InitializrからGradle Projectを選択してプロジェクトを作成する。(ArtifactなどのProject Metadataはデフォルト…

Spring BootのFlightRecorderApplicationStartupを試す

Spring Boot 2.4 (Spring Framework 5.3) から追加されたFlightRecorderApplicationStartupを試したときのメモ。 追記 このバグがあるので、Spring Boot 2.4.7 (Spring Framework 5.3.8) 以降を使ったほうがいい。 https://github.com/spring-projects/sprin…

Spring BootでRedis Cacheのmetricsを収集する

Spring Boot 2.4からRedis Cacheのmetricsが収集できるようになったので試してみた。 ソースコード build.gradle plugins { id 'org.springframework.boot' version '2.4.1' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } gro…

JUnit5とSpockを同じプロジェクトで使う

JUnit5の環境でSpockを使いたいときのメモ。 追記 Spock 2.0からはJUnit5で動作するので、JUnit4の設定は不要。 https://spockframework.org/spock/docs/2.0/release_notes.html ソースコード build.gradle plugins { id 'org.springframework.boot' version…

Spring Data RedisのテストにTestcontainersを使う

Spring Data RedisのRedisTemplateのテストにTestcontainersを使いたいときのメモ。 ソースコード build.gradle plugins { id 'org.springframework.boot' version '2.4.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } grou…

Spring BootのWebClientのテストにSpring Cloud ContractのWireMockを使う

Spring BootのWebClientのテストにSpring Cloud ContractのWireMockを使ってみたときのメモ。 (ちなみに、RestTemplateのテストで使えるMockRestServiceServerはWebClientをサポートしていなかった) ソースコード build.gradle plugins { id 'org.springfr…

Spring BootでRxJava2を使う

Spring Boot 2はRxJava2をサポートしているので、Spring MVCとSpring WebFluxどちらでも、Controllerの戻り値にFlowableなどを指定できる。 ソースコード dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation…

Spring BootとArmeriaでHTTP/2のh2cを試す

Spring BootはHTTP/2のh2c (HTTP/2 over TCP)をサポートしていないが、Armeriaを組み合わせると使用できる。 追記 - Spring Boot 2.3.5からh2cの設定方法がドキュメントに記載されたので、Armeriaを使わなくても試せるようになった。 https://docs.spring.io…

Springfox SwaggerでCSRF tokenを送信する

Spring SecurityのCSRFを有効にしている状態で、SpringfoxのSwagger上でPOST等のメソッドを実行したいときのメモ。 そのままでは試せないが、以下のようなCSRF tokenがを返すエンドポイントを作れば、POST等のメソッドも実行できる。 ソースコード plugins {…

Spring Boot ActuatorのHTTP Client MetricsのURI tagが上限に達した

Spring Boot ActuatorとMicrometerを使っているときに、こんなwarnログが出たときのメモ。 WARN o.s.b.a.a.m.OnlyOnceLoggingDenyMeterFilter - Reached the maximum number of URI tags for 'http.client.requests'. Are you using 'uriVariables' on RestT…

Spring BootでCaffeineのcacheごとにexpireAfterAccessを指定する

Spring BootのcacheにCaffeineを使っている場合で、cacheごとにmaximumSizeやexpireAfterAccessを指定したいときのメモ。 プロパティのspring.cache.caffeine.specにはcacheごとにexpireAfterAccessなどを設定できないので、SimpleCacheManagerを使うしかな…

Spring DataとSpring Sessionで別々のRedisConnectionFactoryを使う

Spring Data RedisとSpring Session Data Redisで、RedisConnectionFactoryを分けたいときのメモ。 Spring Sessionで使うRedisConnectionFactoryに@SpringSessionRedisConnectionFactoryを付けると、Spring Sessionはこちらを使うようになる。 Spring Boot: …