RestTemplateBuilderに関する覚書
RestTemplateBuilder
- RestTemplate は Spring Framework(spring-web)だけれども RestTemplateBuilder は Spring Boot。
- Java の世界の
なんちゃらBuilder
(StringBuilderとか Lombok のBuilder
アノテーションとか、ざっくり総称で Effective Java 版 Builder とでも呼ぶべきか)の使い方は、「まずbuilder
のインスタンスを生成します」から始まるのでRestTempalteBuilder
もそれだと思っていた。- つまり、このクラスインスタンスは Spring Boot のデフォルト状態でインジェクション可能だけれども、このインジェクションされた
RestTempalteBuilder
インスタンスのスコープは(Spring のデフォルトであるところの)singleton-scope ではない と思っていた。- だって
builder
インスタンスが singleton-scope なら、あるbean
でbuilder
に設定したものが他所のbean
にも波及しちゃうじゃない。
- だって
- つまり、このクラスインスタンスは Spring Boot のデフォルト状態でインジェクション可能だけれども、このインジェクションされた
- けど
ResttemplateAutoConfiguration
の Bean 定義部分どう見ても singleton-scope にしか見えない。何か自分の知らない記法(あるいは暗黙的解釈)がなにかまだあるのか? また 何か Spring マジックが発動しているのか…?
と思ってたけど、RestTemplateBuilder
の状態設定メソッド(このへん)見て気づいた、 設定メソッドの中で new RestTemplateBuilder()
やっとるんかーい!
https://hatena.ne.jp/ にアクセスできてるとお思いで?
はじめに: 試した環境
Windows10 の現時点での最新安定版 Google Chrome および Firefox を用いました。
- Google Chrome 78.0.3904.108
- Firefox 70.0.1
また実行に際しては、キャッシュ等の影響を避けるため、Chrome ではゲストモード、Firefox では今回新規作成したプロファイルで確認しました。
…Spring Boot のプロパティではkebab-formatが推奨されている
Relaxed Binding 2.0 という仕組みにより
spring.jpa.database-platform=mysql
spring.jpa.databasePlatform=mysql
spring.JPA.database_platform=mysql
いずれの形式でも正しくバインドできる。
が、公式ドキュメントからは一番上の database-platform
が推奨されているように読み取れる。
Relaxed binding - Spring Boot Configuration Binding:
…native-imageコマンドを実行するために行ったWindows10 への GraalVM インストールがエキサイティングな件
悪い意味で。
なお試した時点での GraalVM 最新リリースバージョンは 19.2.1でした。
GraalVM インストール & 実行
GraalVM のインストール方法はいくつかあるのでお好みで。例えば:
(なお、SDKMAN!は今回試していないのでちゃんと動くかは知らない)
…MockMvc でURLエンコード済みのpathを渡したいときは new URI(...) を引数にする
OAuth2.0 の redirect_uri
をゴニョった実装をテストしたいときにハマった。
mockMvc.perform(get(new URI("/line/oauth/authorize?redirece_uri=https%3A%2F%2Fexample.com")
ってやらないと二重にエンコードされてしまう。
参考
…Intel iGPU環境でのAmethyst 開発環境セットアップ
TL;DR
Ubuntu18.04, Coffee Lake iGPU で vulkan での実行を可能にするには
-
mesa-vulkan-drivers
パッケージインストール -
/etc/X11/xorg.conf.d/20-intel.conf
で DRI3 有効化
の2点が必要。
(おそらく実際には、実行に libvulkan1
、及び開発には加えて libvulkan-dev
も必要と思われるが、最初からインストールされていた)
Cargo.lock をバージョン管理するや否や
cargo new --bin
したパッケージに対して、たまたまデフォルで生成される .gitignore
を用いずに https://gitignore.io/ で生成してものを用いていたのですが、 Cargo.lock
ファイルの扱いが異なるように思われ、あれ?と思って見直してみました。
電子キーボードを買いました
経緯
プログラミングとかビデオゲームとか、かなり目を酷使することばかりやっているので、そうではない趣味を持とうと考えた末、何か楽器を入門することにしました。
LINE Messaging API を試してみる
準備
Spring Boot セットアップ
https://start.spring.io/ でテンプレートを作成して次の依存関係を追加します。
<dependency> <groupId>com.linecorp.bot</groupId> <artifactId>line-bot-spring-boot</artifactId> <version>2.7.0</version> </dependency>
Heroku セットアップ
今回は linebotbeta
というアプリケーション名にしました。
LINE リッチメニューを試してみる
公式リファレンス に書いてある通りですが、リッチメニューを試してみました。 メニューをタップするとPostBackEventを送信します。
LINEログイン機能を試してみる(Spring Boot 2.1.7/Spring Security 5.1.6)
Important
|
本ページは Spring Boot 2.1.7 の頃のものですが、後続として 2.4.5 対応版があります: LINEログインを試してみる(Spring Boot 2.4.5/Spring Security 5.4.6) – 発火後忘失 |
Spring SecurityのOAuth実装は こちらに書いたとおり 歴史的経緯により複数存在しますが、 https://start.spring.io/ の
Dependencies で "OAuth2 Client" を選択した場合に追加されるものは一番新しいSpring Securityの spring-security-oauth2-client
(及び spring-security-oauth2-jose
)でした。
Gradleプロジェクトで生成した実行スクリプトがGitBash(MSYS環境)でうまく動かない
GitBash環境でSDKMAN!を使ってJBakeをインストールしたのですが、 jbake
コマンドを実行すると次のようなエラーが出てうまく動きませんでした。