カテゴリ: Spring 更新日: 2026/02/14

Spring Bootの設定・プロパティ・プロファイルの外部化優先順位を完全解説!初心者にもわかる設定ファイルの読み込み順

外部化設定の優先順位:環境変数/引数/Config Files の読み込み順
外部化設定の優先順位:環境変数/引数/Config Files の読み込み順

先生と生徒の会話形式で理解しよう

生徒

「Spring Bootで設定ファイルの読み込み順ってどうなっているんですか?」

先生

「とても大事なポイントですね。Spring Bootでは、外部から設定を変更できるように、複数の方法でプロパティを指定できますが、優先順位が決まっています。」

生徒

「環境変数やコマンドライン引数、それにapplication.propertiesの設定って、どれが優先されるんですか?」

先生

「では、それぞれの優先順位を詳しく見ていきましょう!」

1. Spring Bootで使われるプロパティの外部化とは?

1. Spring Bootで使われるプロパティの外部化とは?
1. Spring Bootで使われるプロパティの外部化とは?

Spring Bootでは、アプリケーションの挙動を変更するために、設定値(プロパティ)をコードとは別に外部化して管理することができます。これを「プロパティの外部化」と呼びます。たとえば、データベースの接続情報や、アプリケーションのポート番号などを、ソースコードを変更せずに環境ごとに切り替えることができます。

この設定の柔軟性こそが、Spring Bootの最大の魅力のひとつです。

2. Spring Bootの設定方法の種類

2. Spring Bootの設定方法の種類
2. Spring Bootの設定方法の種類

Spring Bootでは以下のようなさまざまな方法で設定値を指定できます。

  • application.properties や application.yml ファイル
  • コマンドライン引数
  • 環境変数(Environment Variables)
  • JVMオプション(-Dオプション)
  • Spring Cloud Config や Vault 等の外部コンフィグサービス
  • @Value や @ConfigurationProperties アノテーション

しかし、これらがすべて同時に存在する場合、どれが優先されるのかは気になりますよね。次に、これらの優先順位について見ていきましょう。

3. Spring Bootの設定プロパティの読み込み優先順位

3. Spring Bootの設定プロパティの読み込み優先順位
3. Spring Bootの設定プロパティの読み込み優先順位

Spring Bootは、設定の読み込みにおいて、あらかじめ定められた優先順位に従って値を決定します。下にその一覧を紹介します。

優先順位(高 → 低) 設定元
1 コマンドライン引数(--server.port=8081など)
2 Javaシステムプロパティ(-Dserver.port=8082)
3 OSの環境変数(SERVER_PORT=8083)
4 Springの環境変数(Environment Abstraction)
5 application.properties や application.yml
6 デフォルトの設定値(Spring Bootが内部的に持っている値)

つまり、同じserver.portという設定が複数の場所で定義されていた場合、最も上にある方法で指定された値が優先されます。

4. application.propertiesapplication.ymlの読み込み順とルール

4. <code>application.properties</code>と<code>application.yml</code>の読み込み順とルール
4. application.propertiesapplication.ymlの読み込み順とルール

Spring Bootでは、設定ファイルとしてapplication.propertiesapplication.ymlが利用できます。この2つが同じディレクトリに存在する場合は、application.propertiesが優先されます。

また、次の順序で設定ファイルを探していきます。

  • file:./config/
  • file:./
  • classpath:/config/
  • classpath:/

上から順に優先度が高く、同じキーが存在する場合は上の方のディレクトリの値が優先されます。

5. Springプロファイルごとの設定ファイルの切り替え

5. Springプロファイルごとの設定ファイルの切り替え
5. Springプロファイルごとの設定ファイルの切り替え

Spring Bootでは、「プロファイル」という仕組みを使って、環境ごとに設定を切り替えることができます。たとえば、開発環境用(application-dev.yml)と本番環境用(application-prod.yml)を用意しておき、実行時に切り替えることが可能です。

プロファイルを指定する方法は以下のとおりです:


--spring.profiles.active=dev

これはコマンドライン引数として指定できますし、環境変数やプロパティファイル内でも設定可能です。

6. コマンドライン引数と環境変数の使い分け

6. コマンドライン引数と環境変数の使い分け
6. コマンドライン引数と環境変数の使い分け

それぞれの方法には使いどころがあります。例えば、DockerコンテナでSpring Bootアプリケーションを動かすときは、環境変数を使うことが多いです。一方で、開発時や一時的に設定を変更したい場合は、コマンドライン引数が便利です。

また、-Dオプションを使ってJavaのシステムプロパティとして渡すことも可能です。


java -Dserver.port=8085 -jar myapp.jar

7. 複数の設定方法が混在したときのトラブル対策

7. 複数の設定方法が混在したときのトラブル対策
7. 複数の設定方法が混在したときのトラブル対策

複数の設定方法が混在すると、どれが最終的な設定値として使われているか分からなくなることがあります。そんなときは、アプリケーション起動時のログに注目しましょう。

Spring Bootは起動時に、使用されているプロパティの情報を詳細にログ出力してくれます。また、Spring Boot Actuatorの/actuator/envエンドポイントを使えば、現在の環境変数や設定値をブラウザ上で確認することも可能です。

8. 実際にapplication.propertiesと環境変数を使ってみよう

8. 実際にapplication.propertiesと環境変数を使ってみよう
8. 実際にapplication.propertiesと環境変数を使ってみよう

以下に、プロパティファイルと環境変数を組み合わせた簡単な例を紹介します。


# application.properties
server.port=8080
myapp.message=Hello from properties!

そして、環境変数で上書きする場合:


export MYAPP_MESSAGE="Hello from env!"

Javaコード側では次のように受け取れます。


@RestController
public class HelloController {

    @Value("${myapp.message}")
    private String message;

    @GetMapping("/")
    public String hello() {
        return message;
    }
}

このように、外部設定を柔軟に使い分けることで、より安全で環境に応じたアプリケーションの管理が可能になります。

Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「In」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
Spring Bootの設定・プロパティ・プロファイルの外部化優先順位を完全解説!初心者にもわかる設定ファイルの読み込み順
新規投稿
New3
Spring
SpringDataJPAのJPAクエリメソッド「Not」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.4
Java&Spring記事人気No4
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.5
Java&Spring記事人気No5
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.6
Java&Spring記事人気No6
Spring
SpringのModelクラスの使い方を完全ガイド!初心者でも安心
No.7
Java&Spring記事人気No7
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.8
Java&Spring記事人気No8
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク