ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
@Value の基本
application.properties や application.yml に書いた設定値を、Spring 管理 Bean のフィールドに自動注入するアノテーションです。
例: プロパティ注入
# application.properties
app.host=api.example.com
app.port=8080
app.timeout=5000
app.features.enabled=true
app.tags=java,spring,boot
@Service
public class ApiClient {
@Value("${app.host}")
private String host;
@Value("${app.port}")
private int port;
@Value("${app.timeout}")
private long timeout;
@Value("${app.features.enabled}")
private boolean enabled;
@Value("${app.tags}")
private List tags; // カンマ区切り自動分割
}
デフォルト値の指定
プロパティが未定義の場合に使う値を : の後に指定:
@Value("${app.host:localhost}") // app.host が未定義なら "localhost"
private String host;
@Value("${app.port:8080}") // 数値もOK
private int port;
@Value("${app.timeout:}") // 空文字
private String timeout;
// プロパティが空 / 未定義の時に null
@Value("${app.optional:#{null}}") // SpEL の null
private String optional;
SpEL(Spring Expression Language)
単純なプロパティ値だけでなく、式を評価できます。
// システムプロパティ
@Value("#{systemProperties['user.home']}")
private String userHome;
// 環境変数
@Value("#{environment['PATH']}")
private String envPath;
// 他の Bean のフィールド参照
@Value("#{appConfig.maxConnections}")
private int maxConn;
// 計算
@Value("#{2 * 1024}")
private int size;
// 条件式
@Value("#{${app.debug} ? 'DEBUG' : 'PROD'}")
private String mode;
// リスト
@Value("#{T(java.util.Arrays).asList('a', 'b', 'c')}")
private List items;
コンストラクタ注入(推奨)
フィールド注入よりコンストラクタ注入が推奨されます(テスト容易、final 化、循環依存検出):
@Service
public class ApiClient {
private final String host;
private final int port;
public ApiClient(
@Value("${app.host}") String host,
@Value("${app.port}") int port
) {
this.host = host;
this.port = port;
}
}
複雑な設定は @ConfigurationProperties を使う
関連するプロパティをまとめて受け取るなら @ConfigurationProperties の方が優れます:
// application.yml
app:
api:
host: api.example.com
port: 8080
timeout: 5000
retry:
max-attempts: 3
delay: 1000
@Component
@ConfigurationProperties(prefix = "app.api")
public class ApiProperties {
private String host;
private int port;
private long timeout;
private Retry retry = new Retry();
public static class Retry {
private int maxAttempts;
private long delay;
// getters/setters
}
// getters/setters
}
メリット:
- 型安全 + ネスト構造をそのまま受け取れる
- バリデーション (
@Validated+ Bean Validation) - IDE 補完が効く(メタデータ自動生成)
プロパティの優先順位
Spring Boot で同名プロパティが複数ソースにある場合の優先順位(高い順):
- コマンドライン引数 (
--app.host=...) - OS 環境変数 (
APP_HOST=...) application-{profile}.propertiesapplication.properties@PropertySourceで読み込んだ外部ファイル- デフォルトプロパティ
よくあるトラブル
Q. プロパティが注入されず null になる
- クラスが Bean になっていない(
@Service等が未付与) newでインスタンス化している(Spring 経由でないと注入されない)- プロパティキーのタイポ(
app.hostvsapp.hosts) - YAML のインデントミス
Q. IllegalArgumentException: Could not resolve placeholder
指定したプロパティが見つかりません。デフォルト値(${key:default})を付けるか、プロパティを定義してください。
Q. 型変換エラー(NumberFormatException)
例: @Value("${app.port}") で int 型に注入しようとして文字列が "abc"。プロパティの値を確認。
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?