Spring
Spring Boot 3.1でDocker Composeとの統合機能がリリースされたので試してみる。 何ができるようになったのか 試してみる 便利な設定 参考 何ができるようになったのか Spring Boot 3.1からDocker Composeとの統合機能がリリースされ、Spring Boot アプリケ…
JDK21でリリースされたVirtual ThreadsがSpring Boot 3.2からサポートされたので試してみる。 Virtual Threadsとは JDK21でリリースされたJavaの軽量スレッド。 Javaが従来提供しているThreadは、OSのスレッドと1:1で紐づくもの(これをPlatform Threadと呼ぶ…
ローカル開発環境の https 化 | blog.jxck.io [1] を読んで、せっかく自前ドメインを持っているので同じことをやってみたので備忘録として残していく。 やりたいこと 前提 手順 サブドメインを登録 サブドメインの証明書を取得 PKCS#12ファイルの作成 Spring…
Thymeleafのバージョンを3.0系から3.1系に更新する際に、関連プロジェクトのリポジトリやライブラリが変更になったことでバージョンアップ時にハマったので、備忘録として残しておく。 ソースリポジトリの統合 Thymeleaf 3.1から以下プロジェクトのソース(テ…
Boolean型で定義しているフォームの項目に対してnullが送られてきた場合にfalseに変換して受け取りたいことがあり、調べたことを備忘録として残していく。 前提 PropertyEditor CustomBooleanEditor 独自PropertyEditor 前提 Spring Framework 3.0.2 Java 17…
Spring SecurityのSecurity Filterについて、どんなFilterがあるのか、どういった順番で登録されているのか、毎回わからなくなるので備忘録としてまとめます。 Spring Security 6.0.0 時点の情報を元に記載しています。 Security Filterとは Spring Security…
Spring Securityを使ったAPIを実装していたときに、REST APIにはBASIC認証をかけて、画面にはフォーム認証をかける、ということがやりたくなったのでその方法を備忘録として書いておきます。 環境 Spring Boot 2.7 Kotlin 1.6.21 方法 /api/から始まるREST A…
タイトルの通り、Spring Securityで認証認可を行う場合に利用するHttpSecurityの処理について調べたので備忘録として書いていきます。 前置き ソースコードを読んだ上で書いていますが、正しい情報はSpring Securityの公式ドキュメントや、リポジトリを参照…
Spring Securityを使った認証処理を実装したアプリケーションにおいて、モックの認証情報を使って動作確認をする方法を書いていきます。 認証処理の実装と、認証対象の画面や機能の実装が並行して行われているときに、Spring Securityの仕組みを使いつつもモ…
背景 Spring Security without the WebSecurityConfigurerAdapter を見て、従来のSpring Securityの設定方法がSpring Security5.7から非推奨になることを知ったので代わりの設定方法を試してみます。 環境 Spring Boot 2.6.7 Kotlin 1.6.21 何が変わるのか S…
Elasticsearch Java API Client について Spring BootでElasticsearch Java API Clientを使う pom.xmlにライブラリを追加 ElasticsearchClientの設定 ElasticsearchClientを使ってみる Elasticsearchの勉強の一環で公式ドキュメントを読んでいたところ、 dep…
はじめに 今回は、Spring BootアプリケーションのセッションをDBで管理する方法を調べたので備忘録として書いていきます。 書いてある内容は手を動かして確認したものですが、正しい情報は公式ドキュメント(以下は2.4.3のもの)の内容を見てください。 Spring…
iikanji.hatenablog.jp ↑こちらの去年の記事で、RedisのKeyspace Notificationsについて書いたのですが、その中でSpring SessionはRedisのKeyspace Notificationsを自動で設定してくれる、と書きました。 今回は、その設定をしているConfigureNotifyKeyspace…
UriComponentsBuilderが提供するencodeメソッドとUriComponentsが提供するencodeメソッドの違いがわからず調べたのでまとめてみます。 今回、使用したSpring Framework のバージョンは5.3.3です。 そもそもUriComponentsBuilderとは? Spring Frameworkが提…
Spring Frameworkでは、UriComponentsBuilderやServletUriComponetnsBulder, MvcUriComponentsBuilder, もしくはUriBuilderインターフェースを実装したクラスを使うことでURIを簡単に作ることができます。 たとえば、以下のコードのようにUriComponetsBuilde…
Spring Session Data Redisのソースコードを読んだので備忘録としてまとめていきます。 ソースコードは以下を読みました。 github.com Spring Session Data Redisのパッケージ構成 Spring Session Data Redisのクラスは全部で13ファイル RedisSessionReposit…
背景 Spring Bootでは@PutMappingや@DeleteMappingなどを使うことでPUT/DELETEメソッドのHTTPリクエストを受け取ることができます。 一方でHTML5では、PUT/DELETEメソッドを送信することができないため、直接HTMLからサーバにリクエストを投げる場合には、HT…
はじめに Consumer Driven Contract Testingとは Spring Cloud Contract Spring Cloud Contractを使ってみる 環境 Provider Consumer ProviderにSpring Cloud Contractを導入する pom.xmlの設定 CDCの作成 YAMLの場合 Javaの場合 Kotlinの場合 Groovyの場合 …
今回は、Spring Bootで実装したREST APIのコードから、APIを叩くクライアントコードを自動生成する方法を書いていきたいと思います。 今回やりたいこと 環境 やることの流れ REST APIを実装する 自動生成に必要なライブラリ/プラグインをpom.xmlに追加する s…
前回のエントリで、Spring FrameworkにおいてString型のフォーム値が未入力の場合に、空文字ではなくnullを受け取る方法を説明しました。 この方法では、List型のフォーム値が未入力の場合は空文字のリストになってしまうので、今回はこれをnullのリストで受…
Spring Frameworkで未入力のフォームの値をデフォルトで設定されている空文字ではなく、nullで受け取る方法をまとめます。 環境は以下です。 Spring Boot 2.3.1.RELEASE Thymeleaf 3.0.11.RELEASE Kotlin 1.3.70 以下のようなフォームと、フォームの値を格納…
Spring Framework のエラーメッセージ周りで詰まって調べたところを忘備録としてまとめてみる。 DefaultMessageCodesResolverとは? バリデーションによって作られたエラーコードからメッセージコードを作成するクラス。 オブジェクトやフィールドに対するメ…
HandlerInterceptorが呼ばれる流れを追ってみる。 ソースコードのバージョンはSpring Boot 2.3.0.RELEASE。 HandlerInterceptorは以下のようにpreHandle, postHandle, afterComplitionを実装することで、Controllerのメソッド(ハンドラ)の前後に任意の処理を…
Thymeleafのth:hrefで変数の値に応じて動的にクエリパラメータをつける方法を備忘録として残しておきます。 やりたいこと th:hrefでURLを生成するときに以下のように変数の値に応じて動的にクエリパラメータをつけたい。変数の値が空の場合はクエリパラメー…
12/18に開催されたSpringFest 2019に参加してきたので、忘備録として書いていきます。 https://springfest2019.springframework.jp/ From Spring Boot 2.2 to Spring Boot 2.3 https://www.slideshare.net/makingx/from-spring-boot-22-to-spring-boot-23-js…
Springの@Component, @Controller, @Service, @Repositoryの違いについて気になったので調べてみます。 Stereotype Annotation @Component, @Controller, @Service, @Repositoryなどは, Stereotypeアノテーションと呼ばれるものです。Stereotypeアノテーショ…
概要 gRPCに興味があったので、Spring Bootを使ったサンプルアプリケーションを実装してみました。 gRPCとは 詳しくは、Guides – gRPC をみてください。 Googleが開発したRPCを実現するプロトコル HTTP/2上で動作する デフォルトでは、Protocol Buffersをつ…
概要 今回は、Java, Kotlinそれぞれを使ったSpringのDIの書き方をまとめてみます。 環境は、Java 1.8, Kotlin 1.2.31, Spring Boot 2.0.0.RELEASE, Spring 5.0.3.RELEASE です。 SpringにおけるDIについて DIについての詳しい説明は割愛します。詳しく知りた…
今回は、Spring AOPについて自分の理解の整理も兼ねてまとめていきたいと思います。 詳しい仕様が知りたい方は公式リファレンスを読んでください。 バージョンは、Spring Boot 2.0.1.RELEASE(Spring 5.0.5.RELEASE)です。 AOPとは AOPとは、Aspect Oriented …
Springで実装したREST APIサーバアプリケーションにSpringfox+Swaggerを導入してWebドキュメントを自動生成したのですが、環境によってデプロイ後の画面でErrorバッジが表示されるケースがありました。 そこで今回は、その原因と解決策について書いていきた…