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

Spring BootのProfile Groupsの使い方を完全ガイド!初心者にもわかる複数プロファイルの束ね方

Profile Groups で複数設定を束ねる:dev/local/test の設計例
Profile Groups で複数設定を束ねる:dev/local/test の設計例

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

生徒

「先生、Spring Bootで開発用やローカル用、テスト用など複数のプロファイルをまとめて管理する方法ってあるんですか?」

先生

「ありますよ。Spring Boot 2.4以降では、Profile Groupsという機能を使えば、プロファイルのグループ化ができます。」

生徒

「それを使えば、プロファイルをひとつにまとめてスッキリ管理できるんですね!」

先生

「その通りです。では、Profile Groupsの基本から具体例まで詳しく学んでいきましょう。」

1. Profile Groupsとは?

1. Profile Groupsとは?
1. Profile Groupsとは?

Spring BootのProfile Groups(プロファイルグループ)とは、複数のプロファイルをひとつの名前でグループ化して一括管理できる機能です。

Spring Boot 2.4から導入されたこの仕組みを使うことで、プロファイルの管理が格段に簡単になります。

たとえば、「local」プロファイルに「dev」と「debug」を含めることで、「local」だけを有効化すれば、それらすべてが一度に有効になるのです。

2. Profile Groupsの設定方法

2. Profile Groupsの設定方法
2. Profile Groupsの設定方法

Profile Groupsはapplication.propertiesまたはapplication.yml内で、spring.profiles.groupプロパティを使って定義します。

以下はapplication.ymlの例です。


spring:
  profiles:
    group:
      local:
        - dev
        - debug
      testenv:
        - test
        - mock

このように設定すると、「local」プロファイルを指定しただけで、「dev」と「debug」も一緒に有効になります。

3. spring.profiles.activeとの連携

3. spring.profiles.activeとの連携
3. spring.profiles.activeとの連携

プロファイルグループを使用するには、spring.profiles.activeにグループ名を指定するだけです。


spring.profiles.active=local

これで、実際には「local」「dev」「debug」がすべて有効になります。

つまり、複数のプロファイルを一つのグループ名でまとめて管理できるので、設定ミスを減らすことができます。

4. Profile Groupsを活用したプロファイル設計の具体例

4. Profile Groupsを活用したプロファイル設計の具体例
4. Profile Groupsを活用したプロファイル設計の具体例

ここでは、よくある3つの環境「dev」「local」「test」の設計例を紹介します。

例:application.yml


spring:
  profiles:
    group:
      dev:
        - common
        - debug
      local:
        - dev
        - h2
      test:
        - common
        - mock

このようにしておくと、

  • spring.profiles.active=local → local, dev, common, debug, h2 が有効
  • spring.profiles.active=test → test, common, mock が有効

各環境で必要なプロファイルが自動的に読み込まれ、環境ごとの一貫性を保ちながら構成できます

5. Profile Groupsがない場合の問題点

5. Profile Groupsがない場合の問題点
5. Profile Groupsがない場合の問題点

Profile Groupsを使わない場合、毎回複数のプロファイルを明示的に指定する必要があり、ミスが発生しやすくなります


spring.profiles.active=dev,common,debug

このような手動の列挙は、管理が煩雑になるだけでなく、新しいプロファイルを追加した際に忘れやすいという問題もあります。

6. プロファイルの有効化順と優先度

6. プロファイルの有効化順と優先度
6. プロファイルの有効化順と優先度

複数プロファイルが同時に有効な場合、後に指定されたプロファイルの設定が優先される傾向にあります。

たとえば、次のようなapplication.ymlがあるとします:


---
spring:
  config:
    activate:
      on-profile: common
server:
  port: 8080

---
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 8081

commondevの両方が有効な場合、devの設定である8081が最終的に使用されます。

7. Profile Groupsと@Profileの併用

7. Profile Groupsと@Profileの併用
7. Profile Groupsと@Profileの併用

@Profileアノテーションで指定するプロファイルも、グループ経由で有効になります。

たとえば、次のようなBean定義がある場合:


@Service
@Profile("debug")
public class DebugLogger {
    // ログ出力処理
}

そしてspring.profiles.active=localを指定した場合、「debug」がGroup経由で有効になるため、DebugLoggerのBeanも自動的に登録されます。

8. Profile Groups設計のベストプラクティス

8. Profile Groups設計のベストプラクティス
8. Profile Groups設計のベストプラクティス

プロファイル設計では、以下のポイントを意識することで保守性と可読性が向上します。

  • 共通設定は「common」などにまとめておく
  • インメモリDBやダミーサービスなどは専用プロファイルに分離する
  • 複数の環境で再利用できるように、小さな単位で構成する
  • 本番環境ではgroupを使わず、明示的なプロファイル指定を推奨

Profile Groupsはとても便利ですが、明示的にすることで予期せぬ挙動を防ぐという考え方も重要です。

9. 現在有効なプロファイルの確認方法

9. 現在有効なプロファイルの確認方法
9. 現在有効なプロファイルの確認方法

Spring Bootアプリケーションで、現在どのプロファイルが有効になっているかを確認したいときは、Environmentクラスを使います。


@RestController
public class ProfileCheckController {

    @Autowired
    private Environment environment;

    @GetMapping("/profiles")
    public String[] getProfiles() {
        return environment.getActiveProfiles();
    }
}

このようにすれば、実際にどのプロファイルがアクティブなのかを明確に確認することができます。

Springの学習を効率化したい方へ

この記事の内容をもっと深く知るには、以下の入門書が最適です。

Spring Framework超入門をAmazonで見る
カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「Is」と「Equals」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「Or」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Java
JavaのLocalDate.minusDaysの使い方を完全ガイド!初心者でもわかる日付操作
新規投稿
New4
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.3
Java&Spring記事人気No3
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.4
Java&Spring記事人気No4
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.5
Java&Spring記事人気No5
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.6
Java&Spring記事人気No6
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.7
Java&Spring記事人気No7
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.8
Java&Spring記事人気No8
Thymeleaf
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加

💻 作業効率アップに

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

Logicool Signature M750 を見る

※ Amazon広告リンク