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

Spring Bootの設定ファイルを環境別に分ける方法!初心者でもわかるapplication-dev.ymlとapplication-prod.ymlの使い方

環境別ファイル設計:application-dev.yml/-prod.yml の分割パターン
環境別ファイル設計:application-dev.yml/-prod.yml の分割パターン

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

生徒

「Spring Bootって、開発環境と本番環境で設定を分けることってできますか?」

先生

「もちろんできますよ。application.ymlファイルを環境ごとに分けて管理するのが一般的です。」

生徒

「どんなふうにファイルを分けたらいいんですか?それに、どうやって切り替えるんですか?」

先生

「では、application-dev.ymlapplication-prod.ymlなどのプロファイルごとの設定ファイルについて、わかりやすく解説していきましょう!」

1. Spring Bootの設定ファイルとは

「1. Spring Bootの設定ファイルとは」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. Spring Bootの設定ファイルとは
1. Spring Bootの設定ファイルとは

Spring Bootでは、アプリケーションの設定をapplication.ymlapplication.propertiesというファイルに記述します。これらのファイルには、データベースの接続情報やポート番号、ログ出力のレベルなどを定義します。

初心者の方が最初につまずきやすいのが、開発環境・本番環境・テスト環境など、異なる設定をどうやって管理するかという点です。ここで役立つのが「プロファイル機能」と「設定ファイルの分割」です。

2. プロファイルによる環境別設定の基本

2. プロファイルによる環境別設定の基本
2. プロファイルによる環境別設定の基本

Spring Bootでは「プロファイル(profile)」という仕組みを使って、環境ごとに設定を切り替えることができます。

たとえば、開発環境なら「dev」、本番環境なら「prod」、テスト環境なら「test」というようにプロファイルを指定して、適切な設定ファイルを読み込ませます。

3. application-dev.ymlapplication-prod.ymlの使い分け

3. application-dev.ymlとapplication-prod.ymlの使い分け
3. application-dev.ymlapplication-prod.ymlの使い分け

実際には、以下のように複数のYAMLファイルを用意して環境ごとに分けます。


src/
└── main/
    └── resources/
        ├── application.yml
        ├── application-dev.yml
        └── application-prod.yml

application.ymlは共通の設定を書くファイルです。そして、プロファイルごとに個別の設定をapplication-xxx.ymlに記述します。

4. 実際の設定例を見てみよう

「4. 実際の設定例を見てみよう」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. 実際の設定例を見てみよう
4. 実際の設定例を見てみよう

まずは共通設定ファイルapplication.ymlの例です。


spring:
  profiles:
    active: dev

この設定により、application-dev.ymlが読み込まれるようになります。

次に、開発用のapplication-dev.ymlの例を見てみましょう。


server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/dev_db
    username: dev_user
    password: dev_pass

続いて、本番用のapplication-prod.ymlの例です。


server:
  port: 80

spring:
  datasource:
    url: jdbc:mysql://prod-server:3306/prod_db
    username: prod_user
    password: prod_pass

5. プロファイルの切り替え方法

5. プロファイルの切り替え方法
5. プロファイルの切り替え方法

プロファイルの切り替えにはいくつかの方法があります。代表的なのは、application.yml内でspring.profiles.activeを設定する方法です。

また、コマンドラインからSpring Bootを起動する際に指定することもできます。


java -jar myapp.jar --spring.profiles.active=prod

これにより、起動時にapplication-prod.ymlが使用されます。

6. 開発現場でよくあるパターン

6. 開発現場でよくあるパターン
6. 開発現場でよくあるパターン

多くの現場では、次のようなパターンで設定を分けています:

  • application.yml → 共通設定
  • application-dev.yml → 開発用
  • application-test.yml → テスト用
  • application-prod.yml → 本番用

これにより、開発者が自分のローカル環境で安全に開発でき、本番環境では本番用のデータベースやサービスを利用することができます。

7. IntelliJでプロファイルを切り替える方法

「7. IntelliJでプロファイルを切り替える方法」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. IntelliJでプロファイルを切り替える方法
7. IntelliJでプロファイルを切り替える方法

IntelliJ IDEAを使っている場合、Run/Debug ConfigurationsからVMオプションに以下を指定することでプロファイルを切り替えることができます。


-Dspring.profiles.active=prod

これにより、実行環境ごとの切り替えが簡単になります。

8. プロファイルごとのBean定義も可能

8. プロファイルごとのBean定義も可能
8. プロファイルごとのBean定義も可能

さらに高度な使い方として、Javaクラス内でプロファイルごとにBeanを分けて定義することも可能です。


@Configuration
public class DataSourceConfig {

    @Bean
    @Profile("dev")
    public DataSource devDataSource() {
        // 開発用DataSourceの設定
    }

    @Bean
    @Profile("prod")
    public DataSource prodDataSource() {
        // 本番用DataSourceの設定
    }
}

このようにすることで、設定ファイルだけでなく、コードレベルでも環境に応じた処理を切り替えることができます。

9. 環境変数との連携も重要

9. 環境変数との連携も重要
9. 環境変数との連携も重要

クラウド環境やDockerを利用する場合、環境変数からプロファイルを切り替えることもよくあります。


export SPRING_PROFILES_ACTIVE=prod

これにより、CI/CD環境でも柔軟に設定が切り替えられます。

10. プロファイルの指定がない場合の挙動

「10. プロファイルの指定がない場合の挙動」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

10. プロファイルの指定がない場合の挙動
10. プロファイルの指定がない場合の挙動

もしspring.profiles.activeの指定がなかった場合、application.ymlだけが読み込まれます。そのため、常に明示的にプロファイルを指定しておくことがトラブルを避けるポイントです。

11. Spring Boot設定ファイルの命名規則と注意点

11. Spring Boot設定ファイルの命名規則と注意点
11. Spring Boot設定ファイルの命名規則と注意点

プロファイル付きの設定ファイルは、必ずapplication-プロファイル名.ymlの形式で命名してください。スペルミスがあるとSpring Bootが正しく読み込めません。

また、複数のプロファイルを指定したい場合はカンマ区切りで記述することもできます。


spring:
  profiles:
    active: dev,test

12. Spring Boot 3.xでの設定変更に注意

12. Spring Boot 3.xでの設定変更に注意
12. Spring Boot 3.xでの設定変更に注意

Spring Boot 3.x系では、一部のプロパティの名前や構造が変更されているため、公式ドキュメントを確認しながら移行対応を行いましょう。

たとえば、セキュリティ関連の設定やmanagementに関するエンドポイント設定などに変更があります。

カテゴリの一覧へ
新着記事
New1
Java
JavaのStreamのreduceを完全解説!初心者でもわかる集約処理の基本
新規投稿
New2
Spring
Javaの@withinアノテーションを初心者向けに解説!Spring AOPでの使い方を完全ガイド
更新記事
New3
Spring
Springの@AfterThrowingアノテーションの使い方を完全ガイド!初心者でもわかる例外処理
更新記事
New4
Spring
Javaの@AfterReturningアノテーションの使い方を完全ガイド!初心者でもわかるAOP入門
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Thymeleaf
Thymeleafのth:checkedの使い方!チェックボックスON/OFFを動的に制御する方法
No.3
Java&Spring記事人気No3
Thymeleaf
Thymeleaf(タイムリーフ)の使い方入門!初心者でもわかるth:textの基礎
No.4
Java&Spring記事人気No4
Java
Javaの抽象クラス(abstract)を完全ガイド!継承と設計のルールを学ぶ
No.5
Java&Spring記事人気No5
Spring
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定
No.6
Java&Spring記事人気No6
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.8
Java&Spring記事人気No8
Thymeleaf
Thymeleafのth:blockの使い方を完全ガイド!初心者でもわかるテンプレートブロック管理