0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring Boot のプロパティ設計

0
Posted at

Spring Boot のプロパティ設計

本記事では、Spring Bootにおける設定値(プロパティ)の管理方法と、
設定変更を反映する際の再ビルド・再起動の要否について整理する。

対象::contentReference[oaicite:0]{index=0}


1. プロパティの読み込み優先順位

Spring Bootでは、同一の設定項目が複数箇所に定義されている場合、
以下の優先順位で設定値が決定される。

優先度(高 → 低)

  1. コマンドライン引数
  2. 環境変数
  3. 外部 application.properties / application.yml
  4. jar内部の application.properties
  5. デフォルト設定

java -jar app.jar --server.port=8081

この場合、application.properties の設定より
コマンドライン引数が優先される。


2. 通常のJava修正

Javaコードを変更した場合は、以下の手順が必要となる。

Java修正
↓
再ビルド
↓
アプリ再起動

理由
Javaコードはコンパイルされて jarファイルに含まれるため、
修正を反映するには再ビルドが必要となる。


3. 再ビルド不要で設定変更を反映する方法

設定ファイルを jar外に配置することで、
再ビルドなしで設定変更を反映できる。


A/app.jar
A/config/application.properties

起動
java -jar app.jar --spring.config.location=./config/

この構成の場合

プロパティ変更
↓
アプリ再起動

のみで設定が反映される。

メリット

  • 環境ごとの設定管理が容易
  • DB接続先やAPIエンドポイントの変更に柔軟対応
  • jarの再ビルド不要

4. 再起動不要で設定変更を反映する方法

設定ファイルを アプリ起動時ではなく処理時に読み込む設計にすることで、
再起動なしで設定変更を反映できる。

Properties props = PropertiesLoaderUtils.loadProperties(resource);
String value = props.getProperty("example.key");

処理フロー

処理実行
↓
設定ファイル読み込み
↓
設定値取得

この方式では

設定ファイル変更
↓
次回処理から反映

となり、再起動も不要となる。

5. 再起動不要方式の注意点

この方式にはいくつかのリスクがある。

IOコスト

処理のたびにファイル読み込みが発生するため、
アクセス頻度が高い場合はパフォーマンスに影響する。

更新途中の読み込み

設定ファイル更新中にアプリが読み込むと、
不完全な設定値を取得する可能性がある。

key1=value1
key2=
key3=value3

設定値の不整合

複数スレッドが同時に処理する場合

スレッドA → 旧設定
スレッドB → 新設定

のように動作が不安定になる可能性がある。

6. 実務での対策

実務では以下のような対策が行われる。

キャッシュ + 定期リロード

起動時
↓
設定ファイル読み込み
↓
メモリキャッシュ
↓
一定時間ごとに再ロード

アトミック更新

settings.tmp 作成
↓
書き込み完了
↓
rename
↓
アプリが読み込み

これにより 更新途中の読み込み問題を回避できる。

7. まとめ

Spring Bootにおける設定変更の反映方法は
以下の3パターンに整理できる。

方法 再ビルド 再起動
Javaコード修正 必要 必要
外部プロパティ変更 不要 必要
実行時読み込み 不要 不要

一般的なシステムでは
外部プロパティ + 再起動反映が最も多く採用される。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?