Spring Boot 2.3.0 から H2Database の名前 jdbc:h2:mem:testdb じゃなくなっとるやん(デフォルトでは)
前はここに書いた通り固定で jdbc:h2:mem:testdb という名前だったのにこれでアクセスできんようになってしもた。
起動ログに
o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:30591993-9fe2-4068-a5e2-05b263e3495b'
みたいに出るのでここで確認しよう。
というか、素直にプロパティで
Spring MVCにはJPA EntityのIDからエンティティオブジェクトに変換する機能がある(が、2.3.1では機能しない)
追記: 2020-07-24にリリースされた2.3.2, 2.2.9 でこの問題は修正されました。ただし、2.1.16では未修正のままのようでした。
Spring Bootは Spring Data Commons を利用して、Thymeleaf(など)からのリクエストからオブジェクトへ変換する際、Sprint Data JPAと連携して、IDからエンティティオブジェクトへマッピングする機能があります(3.2. Property population)。
…Spring Security OAuth 2.0 Client(OAuth 2.0 Login)でトークンの管理をしているのはOAuth2AuthorizedClientService
私も今回の質問(本文末参照)を見たとき少しの間勘違いしてしまったのですが、OAuth2.0のクライアントがどこで各リソースオーナーのトークンを管理しているかと言うと、アプリケーションコンテキストであって、ユーザのセッションコンテキストなわけが無いですよね…
…Spring BootのGradleでのデバッグ実行方法
gradle bootRun --debug-jvm
というように、--debug-jvm オプションを付与すれば良いようです。 これで、デバッガ接続の待受状態で起動します。
BootRun は JavaExec を継承していますが、この --debug-jvm は後者のリファレンスで言及されています。
So many UserDetailsService samples considered harmful for beginners
やっぱり一発目の Spring Security やってみたで UserDetailsService 使うのは止めようず。So many UserDetailsService samples considered harmful for beginners.
はじめに
ちょっと待って!その UserDetails、本当に必要ですか?で書いたことの繰り返しなんですけども。
…List#contains(null)は使わないほうが良い
List(などのコレクション)が要素に null を含むかどうかの判定に、 contains(null) を利用すると NullPointerException が発生することがあります。
リファレンスには次のようにあります:
…
NullPointerException- 指定された要素がnullで、このリストがnull要素を許可しない場合(オプション)
UserDetailsServiceは誤解されている
サンプルコード等だけを見ていると UserDetailsService を利用することがSpring Securityの唯一の認証処理実現方法だと誤解しがちですが、 UserDetailsService はむしろユーティリティライブラリくらいの立ち位置で、別に利用しなくても実現可能です。
Alpine Linuxでglibcじゃないことに起因する問題ってちょくちょくあるよね
…と少し思い返していました。といっても思い出せたのは次の2つなのですが。
Alpine特有の問題については、「取り敢えずglibc/GNU版コマンドをインストールしてみろ」ってのが最初に採ってみる方策としてアリなのかも。
…CompletableFuture覚え書き
CompletableFuture の一連の非同期処理 ほげAsync は、デフォルトでは ForkJoinPool.commonPool() という ExecutorService で実行されます。
そしてこの ExecutorService のワーカスレッドはデーモンスレッドであるため、非デーモンスレッドが無くなると(≒ メインスレッドが終了すると)プール内の処理を完了させること無くプロセスが終了します。
Javaのソースファイルはpackageに対応したディレクトリ階層に置かなくても良い?
https://twitter.com/hishidama/status/1266176675768745984
packageの宣言と実際のディレクトリが一致していなくてもmvn compile(やjavac)が成功するんですが、そういうもんでしたっけ?
…
ミニマル `.vimrc`
kubernetesの試験を受けるに当たって、最小限の .vimrc を覚えておくためのメモ:
set autoindent
set expandtab
set tabstop=2
set shiftwidth=2
…
DockerfileのENTRYPOINTに対応するのはcommand, CMDに対応するのがargs
CMD と command が対応しているわけではないのでまぎらわしい…
Kubernetes リファレンス:
参考として Dockerfile リファレンス:
…GKE(Goole Kubernetes Engine)の始め方
Kubernetes入門の書籍やドキュメントの中には、Kubernetes環境が既に手元にある前提で書かれているものも多いです。
そういう場合、どうやってKubernetes環境を調達して良いのかわからず、一つの手段として自前で環境を作る Kubernetes the hard way をやってみたのですが、一旦環境を作ってしまうとインスタンスを起動させ続けねばならず(作り直すの面倒だし)、財布に優しくないので断念しました。
…