はじめに
Spring Boot を使っていると、
「プロパティが読み込まれない…」
という瞬間に必ず出会います。
- application.yml の値が反映されない
- @Value が null になる
- @ConfigurationProperties が動かない
- プロファイルごとの設定が切り替わらない
こういった問題は、
設定ファイルの仕組みと読み込み順 を理解すると一気に解決します。
この記事では、プロパティが読み込まれないときに
最初に確認すべきポイントを
やさしく・実務寄り で整理していきます。
プロパティが読み込まれない原因(全体像)
1. YAML の書き方ミス(最も多い)
2. キー名のスペルミス
3. 階層(インデント)が間違っている
4. プロファイルが切り替わっていない
5. @Value の書き方が間違っている
6. @ConfigurationProperties の設定漏れ
7. Bean が管理対象外(@Component がない)
8. application.yml の場所が間違っている
この 8 つを順番に確認すれば、
ほとんどの問題は解決します。
YAML の書き方ミス(最も多い)
よくあるミス
- インデントがずれている
- コロンの後にスペースがない
- タブを使っている(YAML はタブ禁止)
NG 例
spring:
datasource:
url: jdbc:mysql://localhost:3306/testOK 例
spring:
datasource:
url: jdbc:mysql://localhost:3306/testYAML は インデントが命 です。
キー名のスペルミス
よくあるミス
sprng: # spring のスペルミスdatasouce: # datasource のスペルミスSpring Boot はスペルミスを教えてくれないため、
気づきにくい落とし穴 です。
階層(インデント)が間違っている
NG 例
server:
port: 8081OK 例
server:
port: 8081階層がずれると、
そのキーは存在しない扱い になります。
プロファイルが切り替わっていない
よくあるミス
application-dev.yml を作ったのに dev が有効になっていない。
対策
application.yml に書く。
spring:
profiles:
active: devありがちな落とし穴
- active が test のまま
- prod が有効になっている
- IntelliJ の「Active Profiles」が優先されている
@Value の書き方が間違っている
NG
@Value("app.name") // ダブルクォートだけ → 文字列扱い
private String name;OK
@Value("${app.name}")
private String name;${} を忘れると、
ただの文字列として扱われます。
@ConfigurationProperties の設定漏れ
よくあるミス
- @ConfigurationProperties を付けただけ
- @EnableConfigurationProperties を付け忘れ
- Bean 登録していない
正しい例
@ConfigurationProperties(prefix = "app")
@Component
public class AppProperties {
private String name;
}または
@EnableConfigurationProperties(AppProperties.class)Bean が管理対象外(@Component がない)
よくあるミス
@ConfigurationProperties(prefix = "app")
public class AppProperties { ... } // ← @Component がないBean として登録されていないため、
プロパティが注入されません。
application.yml の場所が間違っている
Spring Boot が読み込む場所は決まっています。
正しい場所
src/main/resources/application.yml
よくあるミス
- application.yaml(拡張子違い)
- application.yml が 2 つある
- resources 配下に置いていない
実務でよくあるトラブルと対処法
ケース1:@Value が null
→ ${} の付け忘れ
→ キー名のスペルミス
→ プロファイル違い
ケース2:ConfigurationProperties が動かない
→ @Component の付け忘れ
→ @EnableConfigurationProperties の付け忘れ
→ prefix が間違っている
ケース3:application-dev.yml が反映されない
→ active プロファイルが dev になっていない
→ IntelliJ の設定が優先されている
ケース4:DB 接続設定が反映されない
→ spring.datasource の階層ミス
→ URL のスペルミス
ログの読み方(おさらい)
プロパティが読み込まれないときは、
ログにこう出ることがあります。
Failed to bind properties under 'app.name'
BindingException
Could not resolve placeholder 'app.name'
この 3 つが出たら、
プロパティの読み込みミスが原因で確定 です。
まとめ
プロパティが読み込まれない原因は、
「YAML のミス」
「キー名のミス」
「プロファイルのミス」
「アノテーションの付け忘れ」
のどれかです。
- YAML のインデント
- キー名のスペル
- active プロファイル
- @Value の書き方
- @ConfigurationProperties の設定
- Bean 登録の有無
難しく聞こえますが、
「YAML → プロファイル → アノテーション」
の順に確認すれば十分です。

プロパティが読み込まれない問題は、
最初こそ難しく見えますが、
“原因のパターン” を知っているだけで
落ち着いて対処できるようになります。
あなたの開発が、今日より少しだけ楽になりますように。

YAML さんって、インデントに敏感なんだね…
やさしく扱ってあげたいね。

コメント