Spring Boot 2.4.1->2.4.2アップグレードで発生した問題メモ
Spring Framework 5.3.3 で対応された
の影響で、 HttpServletRequest#getDispatcherType()
メソッドが呼ばれるようになっています。
これにより、 HttpServletRequest
をモック化して実行していたテストケースが(想定外のメソッド呼び出しで null
を返すため)失敗するようになっていました。
Ubuntu 20.04 LTS にアップグレードして問題が発生した
さて2021年にもなったし、そろそろUbuntuアップグレードしても解消できない地雷は無くなっているだろう、と思い18.04からアップグレードを敢行しました。
Spring Boot 2.3.5 で MapStruct を利用しているプロジェクトのビルドが失敗した
調査したところSpring Bootの問題と言うよりは、Lombokのバージョンが 1.18.12
から 1.18.16
に上がったことによる非互換性の問題でした。
Lombokのchangelogに説明があります:
Spring SecurityのOAuth 2.0 Login でログインしても UserInfo Endpoint にアクセスしてくれない
Spring Security OAuth 2.0 Login を利用してログインしたのですが、通常ログイン後 UserInfo Endpoint へアクセスしてくれるはずなのにこの処理がスキップされてしまうような事象に出会いました。
WindowsでGradleが扱うリソースのファイルエンコーディング設定
問題
Spring Bootの自動テストで data.sql
を作成しているのですが、 gradle check
でテストを実行すると、失敗してしまう。
原因を調べたのですが、どうも日本語のカラムを比較しているところで失敗しているようで、出力を見る感じ data.sql
のファイルエンコーディングが MS932
で扱われてしまっているようでした。
claimとscopeを追加して取得してみる
はじめに
Keycloak上で新しいclaimと、それを取得できる新しいscopeを定義し、Spring Securityを使って参照してみます。
KeycloakをIdPにしてSpring Security OAuth 2.0 Login/Client を試してみる で作成したコードをベースにしています。
Spring Security: OIDC の redirect_uri を変更する
はじめに
KeycloakをIdPにしてSpring Security OAuth 2.0 Login/Client を試してみる で作成したコードに対して、 カスタム redirect_uri
の設定を行ってみます。
今回のコードはこちら:
変更手順
KeyCloak 登録情報の変更
前回のページ を参考に、 "Valid Redirect URIs" の値を今回変更するURL http://localhost:8080/my_redirect_uri に更新します。
DevToolsを組み込んでいると再起動してもsessionが引き継がれる
Spring Boot開発中、再起動するとsessionは消失すると思いこんでいたのですが、どうも引き継がれているように見えて混乱しました。
その後、調査してみると server.servlet.session.persistent
プロパティで再起動時セッションを破棄するか保持するかを設定できることがわかりました。ただし、デフォルト値は false
で、もちろんデフォルトからは変更していません(存在を知らなかったので)。
Ruby on Rails 6 を Centos6 や Centos7 で動かす
でそれぞれ、 CentOS6 + Rails6, CentOS7 + Rails6 の Vagrant Box を作成しました。ググってみたけれど、あまり無いものなんですね。
CentOS6にGCC10.2.0をインストールしたときのメモ
ビルド作業は次のページを参考にしました:
環境は こちら に記載したものです。
curl -L -O http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.xz
tar xf gcc-10.2.0.tar.xz
cd gcc-10.2.0
./contrib/download_prerequisites
./configure --enable-languages=c,c++ --prefix=/opt/gcc-10.2.0 --disable-bootstrap --disable-multilib
make -j 5
sudo make install
つづいて ldoconfig
での登録ですが、そのまま行うとエラーが出たので こちら を参照にして事前に1つのファイルをリネームしておきました:
gccをビルドするのにどれくらい時間がかかるの?(10分かからなかった)
gccをビルドしようと思ったのですが、結構時間がかかるイメージがあって、先にどれくらいかかるのか調べたかったのだけれど検索しても見つかりませんでした。
gradle bootRun でプロファイルを指定するには?
gradle bootRun
を実行する際にアクティブ化するプロファイルの指定を行いたかったのですが、ぱっと思いつかなかったのでメモ。
まず、
gradle bootRun -Dprofiles.active=myproile
はうまくいきません。`profiles.active`システムプロパティは (アプリケーションでなく) Gradle に渡されるためです。
openapi-generaterで生成したcontrollerにカスタム引数を追加する
はじめに
openapi generator を Spring Boot で利用してみる で openapi-generator を用いて Spring MVC のコントローラ(のインタフェース)を自動生成してみました。
その後、これを実際に利用してみて気づいたのですが、ハンドラ(controllerのメソッド)に独自の引数を生やしたいことが多く、このままだと非常に不便です。