Spring Bootの@Value完全解説|基本構文・型変換・デフォルト値と実務注意点
CONTENTS
Spring Bootで開発を進めていると、設定ファイルに書いた値をJavaコードで使う場面が必ず出てきます。 その際に登場するのが @Valueアノテーション です。
ただし、@Valueは「ただ設定値を入れるための便利なアノテーション」ではありません。 SpringのDI(依存性注入)や設定管理の設計思想を前提に成り立っている仕組みです。
Springがどのように設定ファイルを読み込み、どのタイミングで値を注入しているのかといった 背景や設計思想については、以下の記事で詳しく解説しています。
Spring Bootにおける設定注入の仕組みと設計思想を理解する
本記事ではその前提を踏まえたうえで、エンジニアが現場で迷わず使えるように、 @Valueの基本構文・書き方・注意点を、実装視点に絞って解説します。
エンジニアが理解すべき@Valueの基本構文
@Valueアノテーションは、設定ファイルに定義された値を、Springの管理下にあるクラスへ注入するために使います。
最も基本的な構文は、${キー名} という形式です。 この書き方は、Spring Boot開発における前提知識になります。
設定ファイルとJavaコードの対応関係
まず、application.properties に値を定義します。
app.name=sample-application
app.max-user=100
app.enabled=true
次に、Javaクラス側で @Value を使って受け取ります。
@Value("${app.name}")
private String appName;
@Value("${app.max-user}")
private int maxUser;
@Value("${app.enabled}")
private boolean enabled;
ここで重要なのは、 設定ファイルのキー名と、@Valueで指定するキーは完全一致が必要 という点です。
一文字でも違えば、Springは値を解決できず、アプリケーションは起動時エラーになります。
エンジニアがつまずきやすい型変換の考え方
application.properties では、すべての値は文字列として記述されています。
しかし @Value を使うと、Java側ではフィールドの型に応じて、 Spring Bootが自動的に型変換を行います。
- String 型 → 文字列のまま注入される
- int / long 型 → 数値に変換される
- boolean 型 → true / false に変換される
ただし、設定値がその型に変換できない場合、 アプリケーションは起動時に失敗します。
実務では、 「デプロイしたら起動しない」 「ローカルでは動くが本番で落ちる」 といったトラブルの原因になりやすいため、 型と値の整合性を常に意識する必要があります。
デフォルト値を指定する正しい使いどころ
@Value では、設定が存在しない場合に備えて、 デフォルト値を指定することができます。
@Value("${app.timeout:30}")
private int timeout;
この書き方では、app.timeout が設定されていない場合、 30 が使用されます。
ただし、デフォルト値は「便利な機能」である一方、 エンジニアとして慎重に扱うべきポイントでもあります。
- 必須設定にデフォルトを付けると事故につながる
- 設定漏れに気づけなくなる
- 本番で想定外の挙動を引き起こす可能性がある
実務では、 「なくても動いてよい設定」にのみデフォルトを付ける、 という判断が一般的です。
ここで一度、実務レベルの学習環境を考えてみてください
@Value の書き方や挙動を理解できた方は、 すでに「設定を正しく扱えるエンジニア」に近づいています。
もし、 「独学では設定や運用の判断が不安」 「現場に近い形で学びたい」 と感じているなら、 zerocode という選択肢があります。
単なる文法ではなく、 実務でどう使われるかを意識した学習環境は、 エンジニアとしての成長速度を大きく左右します。
エンジニアが@Valueを使うときの設計上の注意点
@Value は便利ですが、 多用しすぎると設定管理が複雑になります。
エンジニアとして意識すべきポイントは次の通りです。
- 設定キーの命名が一貫しているか
- 設定の責務が明確か
- どのクラスで使われているか把握できるか
特にチーム開発では、 「この設定は何のために存在するのか」を 他のメンバーに説明できることが重要です。
@Value は、正しく使えばコードの見通しを良くしますが、 設計を考えずに使うと、 逆に理解しづらいコードになる点を覚えておきましょう。
まとめ

- @Valueは設定ファイルとJavaコードを結びつける基本機能
- 基本構文は ${キー名}
- 型変換とデフォルト値の扱いが重要
- 実務では「必須かどうか」を常に意識する
設定を正しく扱えるようになると、 エンジニアとして任される範囲が広がります。