カテゴリ: 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

commonとdevの両方が有効な場合、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();
    }
}

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

生成AIを基礎から学びたい方へ

ChatGPTなどの生成AIをこれから学びたい方に向けて、AIスキルアカデミーの口コミ・評判、料金、無料セミナーの内容を詳しくまとめています。

AIスキルアカデミーの口コミ・評判を詳しく見る
カテゴリの一覧へ
新着記事
New1
Java
JavaのassertFalseとは?JUnit5のAssertionsクラスを初心者向けにわかりやすく解説
新規投稿
New2
Thymeleaf
ThymeleafでDBから取得したデータを編集フォームの初期値にセットする方法!Entity連携を初心者向けに解説
新規投稿
New3
Spring
JavaのSpringで使う@FutureOrPresentアノテーションを完全ガイド!初心者でもわかる日付バリデーション
新規投稿
New4
Java
JavaのLocalDateクラスのgetMonthValueメソッド完全ガイド!初心者でもわかる数値で月を取得する方法
新規投稿
人気記事
No.1
Java&Spring記事人気No1
Servlet
JavaサーブレットのdoPostメソッドとは?初心者向けにやさしく解説!
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpServletResponseクラスを初心者向けに徹底解説!
No.3
Java&Spring記事人気No3
Servlet
JavaのHttpServletRequestWrapperとgetSessionメソッドの使い方を徹底解説!初心者向けServletのセッション管理入門
No.4
Java&Spring記事人気No4
Servlet
JavaのServletExceptionクラスを初心者向けに徹底解説!
No.5
Java&Spring記事人気No5
Servlet
JavaのHttpSessionインターフェースとgetSessionContextメソッドを徹底解説!初心者でもわかるセッション管理の基本
No.6
Java&Spring記事人気No6
Java
JavaのStringクラスとlengthメソッドを完全解説!初心者でも理解できる文字列の長さ取得の使い方
No.7
Java&Spring記事人気No7
Servlet
JavaのHttpSessionAttributeListenerとattributeRemovedメソッドの使い方を徹底解説!初心者でもわかるセッション属性の削除と監視
No.8
Java&Spring記事人気No8
Java
Javaのクラスとインスタンス化、コンストラクタの使い方完全ガイド!初心者でもわかるオブジェクト指向の基礎