ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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アノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?