ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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<String> 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<String> 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
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- APIキー取得方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?