カテゴリ: Spring 更新日: 2025/09/14

Spring Bootでapplication.ymlを使い分ける方法を解説!初心者向けプロファイル設定入門

複数の設定ファイルを使い分ける方法(application-dev.ymlなど)
複数の設定ファイルを使い分ける方法(application-dev.ymlなど)

新人と先輩の会話形式で理解しよう

新人

「Spring Bootでapplication.ymlってよく見かけますけど、これって何ですか?」

先輩

application.ymlは、Spring Bootアプリの設定ファイルだよ。データベース接続やログレベルなどを定義できるんだ。」

新人

「設定って、ひとつのファイルに全部書くんですか?」

先輩

「実は環境ごとに分けて管理するのが普通だよ。例えばapplication-dev.ymlapplication-prod.ymlのようにね。」

新人

「なるほど……それってどうやって使い分けるんですか?」

先輩

「よし、今日はapplication.ymlプロファイル設定について丁寧に解説するよ!」

1. application.ymlとは?役割と仕組みを理解しよう

1. application.ymlとは?役割と仕組みを理解しよう
1. application.ymlとは?役割と仕組みを理解しよう

application.ymlは、Spring Bootの設定を一元管理するためのファイルで、設定の中心的な役割を担います。主に以下のような情報を定義します。

  • サーバーポート番号
  • データベース接続情報
  • ログ出力の設定
  • プロファイルの有効化

Spring Bootは起動時にapplication.ymlを自動で読み込み、そこに書かれた設定に従ってアプリケーションを構成します。ファイル名が固定で、src/main/resources配下に配置するのが基本です。

設定例を見てみましょう。


server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: pass
  profiles:
    active: dev

このように、サーバーのポート番号やデータベース情報を明確に定義できます。

2. Spring Bootにおけるプロファイルとは?開発・本番の切り替えを理解しよう

2. Spring Bootにおけるプロファイルとは?開発・本番の切り替えを理解しよう
2. Spring Bootにおけるプロファイルとは?開発・本番の切り替えを理解しよう

Spring プロファイルは、環境ごとに異なる設定を簡単に切り替えるための仕組みです。例えば、開発環境ではローカルのDB、本番環境ではクラウド上のDBを使いたい場合、プロファイルを使えば設定を分離できます。

Springでは、application-プロファイル名.ymlという形式のファイルを用意しておくことで、指定したプロファイルに応じてそのファイルを読み込んでくれます。

例として、application-dev.ymlを作成し、開発用の設定を書くとこうなります:


server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/devdb
    username: devuser
    password: devpass

本番環境用にapplication-prod.ymlを用意すれば、同様に別の設定を書けます。


server:
  port: 80

spring:
  datasource:
    url: jdbc:mysql://prod-db-host:3306/proddb
    username: produser
    password: prodpass

そして、どのプロファイルを使うかはapplication.ymlで下記のように指定します:


spring:
  profiles:
    active: dev

このように設定すると、Spring Bootはapplication.ymlの内容を読みつつ、指定されたプロファイル(この例ではdev)の設定ファイルもマージして読み込みます。

設定ファイルの優先順位は以下のようになっており、プロファイル指定によって環境ごとの設定を柔軟に管理できます。

  • application-xxx.yml(プロファイル付き)が優先
  • application.yml(共通設定)はすべてのプロファイルで適用

補足:プロファイル設定をGradle+pleiadesで動かすときのポイント

開発環境であるpleiadesでSpring Bootアプリを動かす場合、プロファイルの指定はVMオプションからも可能です。

Eclipse(pleiades)で設定するには、以下の手順で行います。

  1. プロジェクトを右クリック → 実行構成(Run Configurations)を開く
  2. 「Spring Boot App」→ 対象の起動設定を選択
  3. 「VM引数」欄に以下を追加:

-Dspring.profiles.active=dev

この指定により、pleiades環境でも明示的にdevプロファイルのapplication-dev.ymlが読み込まれます。

プロファイルを切り替えて確認すると、異なる設定でアプリが起動していることがわかるでしょう。

3. application-dev.yml / application-prod.ymlの作成方法

3. application-dev.yml / application-prod.ymlの作成方法
3. application-dev.yml / application-prod.ymlの作成方法

application-dev.ymlapplication-prod.ymlは、Spring Bootのプロファイルごとの設定を管理するための個別のファイルです。これらのファイルはすべてsrc/main/resourcesディレクトリに配置し、共通の設定ファイルであるapplication.ymlとは明確に区別して管理します。

作成手順は非常にシンプルで、まずはリソースフォルダに以下のような名前でファイルを新規作成します。

  • application-dev.yml(開発環境)
  • application-prod.yml(本番環境)

例えば、開発環境用にローカルのMySQLを使いたい場合は以下のように記述します。


server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/devdb
    username: devuser
    password: devpass
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

一方、本番環境用には次のように設定します。


server:
  port: 80

spring:
  datasource:
    url: jdbc:mysql://prod-server:3306/proddb
    username: produser
    password: prodpass
  jpa:
    hibernate:
      ddl-auto: validate
    show-sql: false

このように、プロファイルごとに使用するポートやデータベース、SQL出力設定などを完全に分離して記述できるため、環境に応じた安全かつ最適な設定を行うことが可能になります。

4. 起動時にどのプロファイルを使用するか指定する方法

4. 起動時にどのプロファイルを使用するか指定する方法
4. 起動時にどのプロファイルを使用するか指定する方法

Spring Bootでは、アプリケーションの起動時に「どのプロファイルを使うか」を明示的に指定することで、読み込む設定ファイルを切り替えることができます。この方法は非常に柔軟で、様々なシーンで活用されています。

まず、基本的な指定方法として、application.yml内にspring.profiles.activeを記述する方法があります。


spring:
  profiles:
    active: dev

これにより、アプリケーションはapplication-dev.ymlを自動で読み込むようになります。

もう一つの方法として、コマンドラインやIDEのVM引数から指定するやり方もあります。特にpleiadesを使っている場合、Run ConfigurationsからVM引数を設定できます。

例:


-Dspring.profiles.active=prod

Gradleで実行する場合は、以下のようにプロファイルを指定することが可能です。


./gradlew bootRun --args='--spring.profiles.active=dev'

このようにコマンドで切り替えることで、CI/CDなど自動化された環境でも柔軟にプロファイルを使い分けることができます。

5. 実践編:開発用と本番用の設定ファイルを切り替える例

5. 実践編:開発用と本番用の設定ファイルを切り替える例
5. 実践編:開発用と本番用の設定ファイルを切り替える例

ここでは、実際にプロファイルを使って設定ファイルを切り替える流れを確認していきます。まずは共通の設定をapplication.ymlに記述し、各プロファイル特有の設定をapplication-dev.ymlapplication-prod.ymlに記述します。

共通設定ファイル:


spring:
  profiles:
    active: dev
logging:
  level:
    root: INFO

開発用設定ファイル:


server:
  port: 8081

spring:
  datasource:
    url: jdbc:h2:mem:devdb
    driver-class-name: org.h2.Driver
    username: sa
    password:

本番用設定ファイル:


server:
  port: 80

spring:
  datasource:
    url: jdbc:mysql://prod-db:3306/proddb
    username: produser
    password: prodpass

そして、起動時にVM引数として下記を指定すれば、本番設定が適用されます。


-Dspring.profiles.active=prod

この状態でアプリケーションを起動すると、application.ymlapplication-prod.ymlが統合され、プロファイルprod用の構成で実行されます。

ポイントは、共通設定はapplication.ymlに書き、環境ごとの差分だけをプロファイルごとのファイルに書くことです。こうすることで、設定の重複を防ぎ、メンテナンス性が高まります。

また、プロジェクト内で@Controllerを使って画面に反映するデータを切り替えることも可能です。例えば、開発環境ではモックデータ、本番環境では実データを使用するように条件分岐できます。


@Controller
public class ProfileController {

    @Value("${spring.datasource.url}")
    private String dbUrl;

    @GetMapping("/")
    public String showProfileInfo(Model model) {
        model.addAttribute("dbUrl", dbUrl);
        return "index";
    }
}

これにより、今どの設定ファイルが反映されているかを画面上で確認することも可能になります。

6. プロファイルごとに異なる値を設定する具体例

6. プロファイルごとに異なる値を設定する具体例
6. プロファイルごとに異なる値を設定する具体例

Spring application.yml 切り替えの活用で最も効果が出るのは、プロファイルごとに設定値を変えたいときです。特にapplication-dev.ymlapplication-prod.ymlでは、次のような違いを持たせることが一般的です。

  • 開発環境では組み込みデータベース(H2など)を使用
  • 本番環境では本物の商用データベース(MySQLやPostgreSQL)を使用
  • ログ出力のレベルやSQL表示有無を切り替える

以下はそれぞれの設定例です。

application-dev.yml(開発用)


spring:
  datasource:
    url: jdbc:h2:mem:devdb
    driver-class-name: org.h2.Driver
    username: sa
    password:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
logging:
  level:
    root: DEBUG

application-prod.yml(本番用)


spring:
  datasource:
    url: jdbc:mysql://prod-db:3306/proddb
    username: produser
    password: prodpass
  jpa:
    show-sql: false
logging:
  level:
    root: WARN

このように、プロファイルによってログレベルやデータベース、SQLログの出力可否を分けることができます。プロファイル指定を適切に使うことで、開発時と本番時で安全かつ効率的な挙動に分離できます。

7. 設定ファイルの切り替えでよくある失敗とその対策

7. 設定ファイルの切り替えでよくある失敗とその対策
7. 設定ファイルの切り替えでよくある失敗とその対策

application-prod.ymlなどの設定ファイルを作っても、Spring Bootが意図した通りに読み込んでくれないことがあります。これは初心者によくあるつまずきポイントです。ここでは実行環境でよくあるトラブルと、その対策を紹介します。

① プロファイル名の誤記

例えば、application-prd.ymlのようにスペルミスすると、当然読み込まれません。指定したプロファイル名とファイル名は一致している必要があります。

正しくない例:


spring:
  profiles:
    active: prd

正しい例:


spring:
  profiles:
    active: prod

② ファイルの配置場所が間違っている

設定ファイルはsrc/main/resourcesの直下に配置する必要があります。サブフォルダに置くと、Spring Bootは認識できません。

③ pleiadesのVM引数が未設定

pleiadesで実行する際に、-Dspring.profiles.active=prodのようなVM引数を設定していないと、Springはapplication.ymlしか読み込みません。

VM引数の設定は、実行構成の中にある「引数」タブに以下のように追加します。


-Dspring.profiles.active=prod

④ Gradleでプロファイル指定が抜けている

Gradleから起動する場合にも、必ず--args='--spring.profiles.active=dev'のような明示的な指定が必要です。指定しないと、期待していたapplication-dev.ymlが無視されることになります。


./gradlew bootRun --args='--spring.profiles.active=dev'

8. 複数人で開発する場合のプロファイル運用ベストプラクティス

8. 複数人で開発する場合のプロファイル運用ベストプラクティス
8. 複数人で開発する場合のプロファイル運用ベストプラクティス

チームで開発する場合、各開発者がそれぞれ異なる設定で作業することがよくあります。例えば、ローカルデータベースのURLやログレベルなどが人によって異なる場合、設定の管理方法が重要になります。

推奨される方法は、以下の3ステップです。

  1. application.ymlに共通設定だけを書く
  2. 各開発者のプロファイルファイル(例:application-taro.yml)を作る
  3. VM引数や環境変数で各自のプロファイルを指定する

例えば、開発者の田中さんがローカルMySQLを使いたい場合、次のようなファイルを作成します。


# application-taro.yml
server:
  port: 8090

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/taro_db
    username: taro
    password: taropass

そして、田中さんの環境では起動時にこのように指定します。


-Dspring.profiles.active=taro

これにより、他の開発者の環境に影響を与えることなく、自分専用の設定で開発できます。

また、application-xxx.ymlはGitにコミットせず、個人の環境専用にしておくと、機密情報や環境差異を安全に管理できます。Git管理から除外するには.gitignoreに追記します。


# .gitignore に追加
src/main/resources/application-taro.yml

このような運用にすることで、Springのプロファイル設定を活用しながらチーム開発をスムーズに進めることができます。設定の衝突や誤動作を未然に防ぐことができるのです。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
Javaのメソッドを呼び出す書き方を完全解説!mainメソッドから実行する基本
Java のメソッドとは?基本の書き方を学ぼう
Javaの多次元配列(2次元配列)とは?初心者向けにわかりやすく解説
Javaの配列をコピーする「Arrays.copyOf()」の基本を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
SQLのINSERT文を完全ガイド!初心者でもわかるデータの追加方法
No.2
Java&Spring記事人気No2
HTMLのセレクトボックス(プルダウン)の使い方を完全ガイド!selectとoptionの基本を覚えよう
No.3
Java&Spring記事人気No3
Spring Bootで学ぶ!セッションの有効期限(タイムアウト)設定の基礎
No.4
Java&Spring記事人気No4
Java のファイル構成を理解しよう(.javaと.class)|初心者向けにわかりやすく解説