JavaとSpring Bootで為替レートを取得する
RestClient、BigDecimal、環境変数による認証、鮮度フィールドを使って、型付きSpring Bootクライアントを作る。
SpringのRestClientはexchangerate.devのJSONをJava recordへ直接変換できる。レートはBigDecimalで保持し、キーは設定から注入し、source、market_session、data_updated_atを残す。
Key points
同期の型付きクライアントにはSpring
RestClientを使う。レートと金額は
BigDecimalで扱う。キーは
EXCHANGERATE_API_KEYから読む。レートとともに
data_updated_atを保存する。型付きRestClientを作る
次のrecordはレートのマップと解釈に必要なフィールドを保持する。Jacksonは@JsonPropertyでsnake_case名を割り当て、SpringがHTTPとJSON変換を担当する。
環境からキーを読み込む
鮮度とエラーを明示的に扱う
RestClient.retrieve()は既定で4xxと5xxに例外を投げる。共有リクエストファクトリに有限のタイムアウトを設定し、一時的な障害だけを再試行する。401はキー修正、継続する429はトラフィック削減か上限変更が必要である。
計算中はBigDecimalを維持する
レートと金額を
BigDecimalとして解析し、明示した丸め規則で乗算し、対象通貨の表示時だけ丸める。APIレートは完全な精度を維持する。- 設定済みRestClientを再利用する。
- 接続と読み取りのタイムアウトを設定する。
- 成功レスポンスだけをキャッシュする。
- source、marketSession、dataUpdatedAtを保存する。
MM
exchangerate.dev
FXデータを扱う開発者向けの統合ガイド。