Spring Boot 2.3.5 で MapStruct を利用しているプロジェクトのビルドが失敗した


調査したところSpring Bootの問題と言うよりは、Lombokのバージョンが 1.18.12 から 1.18.16 に上がったことによる非互換性の問題でした。

Lombokのchangelogに説明があります:

Read more ⟶

Spring SecurityのOAuth 2.0 Login でログインしても UserInfo Endpoint にアクセスしてくれない


Spring Security OAuth 2.0 Login を利用してログインしたのですが、通常ログイン後 UserInfo Endpoint へアクセスしてくれるはずなのにこの処理がスキップされてしまうような事象に出会いました。

Read more ⟶

WindowsでGradleが扱うリソースのファイルエンコーディング設定


問題

Spring Bootの自動テストで data.sql を作成しているのですが、 gradle check でテストを実行すると、失敗してしまう。

原因を調べたのですが、どうも日本語のカラムを比較しているところで失敗しているようで、出力を見る感じ data.sql のファイルエンコーディングが MS932 で扱われてしまっているようでした。

Read more ⟶

claimとscopeを追加して取得してみる


はじめに

Keycloak上で新しいclaimと、それを取得できる新しいscopeを定義し、Spring Securityを使って参照してみます。

KeycloakをIdPにしてSpring Security OAuth 2.0 Login/Client を試してみる で作成したコードをベースにしています。

Read more ⟶

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 に更新します。

Read more ⟶

DevToolsを組み込んでいると再起動してもsessionが引き継がれる


Spring Boot開発中、再起動するとsessionは消失すると思いこんでいたのですが、どうも引き継がれているように見えて混乱しました。

その後、調査してみると server.servlet.session.persistent プロパティで再起動時セッションを破棄するか保持するかを設定できることがわかりました。ただし、デフォルト値は false で、もちろんデフォルトからは変更していません(存在を知らなかったので)。

Read more ⟶

Ruby on Rails 6 を Centos6 や Centos7 で動かす


でそれぞれ、 CentOS6 + Rails6, CentOS7 + Rails6 の Vagrant Box を作成しました。ググってみたけれど、あまり無いものなんですね。

Read more ⟶

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つのファイルをリネームしておきました:

Read more ⟶

gccをビルドするのにどれくらい時間がかかるの?(10分かからなかった)


gccをビルドしようと思ったのですが、結構時間がかかるイメージがあって、先にどれくらいかかるのか調べたかったのだけれど検索しても見つかりませんでした。

Read more ⟶

gradle bootRun でプロファイルを指定するには?


gradle bootRun を実行する際にアクティブ化するプロファイルの指定を行いたかったのですが、ぱっと思いつかなかったのでメモ。

まず、

gradle bootRun -Dprofiles.active=myproile

はうまくいきません。`profiles.active`システムプロパティは (アプリケーションでなく) Gradle に渡されるためです。

Read more ⟶

openapi-generaterで生成したcontrollerにカスタム引数を追加する


はじめに

openapi generator を Spring Boot で利用してみる で openapi-generator を用いて Spring MVC のコントローラ(のインタフェース)を自動生成してみました。

その後、これを実際に利用してみて気づいたのですが、ハンドラ(controllerのメソッド)に独自の引数を生やしたいことが多く、このままだと非常に不便です。

Read more ⟶

Restful API, path を使うか query を使うか


特に結論はなく、情報収集です。

Google の検索 URI「http://www.google.com/search?q=jellyfish」について考えてみよう。Google Web アプリケーションがパス変数を使用していたならば、この URI はアルゴリズムの実行結果というよりも、ディレクトリのようになっていただろう(http://www.google.com/search/jellyfish)。

Read more ⟶

openapi generator を Spring Boot で利用してみる


今回の成果物

設定

build.gradle

辺りを参考にしています。

build.gradle

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
plugins {
    id 'eclipse'
    id 'org.openapi.generator' version '4.3.1'
}

ext {
    openApiOutputDir = "$rootDir/build/generated/openapi"
}

sourceSets.main.java.srcDirs += ["$openApiOutputDir/src/main/java"]

dependencies {
    // これらは自動生成クラスが import しているので必要
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.openapitools:jackson-databind-nullable:0.2.1'
    compileOnly 'io.swagger:swagger-annotations:1.6.2'
}

openApiGenerate {
    generatorName = 'spring'
    inputSpec = "$rootDir/specs/test.yml"
    outputDir = "$openApiOutputDir"
    apiPackage = 'org.openapi.example.api'
    modelPackage = 'org.openapi.example.model'
    configOptions = [
        dateLibrary: 'java8',
        interfaceOnly: 'true',
        skipDefaultInterface: 'true',
    ]
}

compileJava.dependsOn tasks.openApiGenerate

specs/test.yml

上の build.gradle で指定している、今回の OpenAPI spec ファイルです。

Read more ⟶