カテゴリ: 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とは?
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を活用したプロファイル設計の具体例
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の併用
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();
    }
}

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

カテゴリの一覧へ
新着記事
New1
Java
JavaのStreamのmaxを完全解説!初心者でもわかる最大値の取得方法
新規投稿
New2
JSP
JSPで改行やスペースを正しく表示する方法!HTMLとの連携ポイントも解説
更新記事
New3
Spring
SpringのJpaRepositoryとsaveAndFlushの使い方を完全ガイド!初心者でもわかるデータ操作
更新記事
New4
Spring
Springの@Autowiredアノテーションの使い方を完全ガイド!初心者でもわかる依存性注入
更新記事
人気記事
No.1
Java&Spring記事人気No1
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう
No.4
Java&Spring記事人気No4
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.5
Java&Spring記事人気No5
JSP
JSPでフォームを表示して入力を受け取る基本手順をやさしく解説!初心者向けフォーム処理の入門ガイド
No.6
Java&Spring記事人気No6
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.7
Java&Spring記事人気No7
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.8
Java&Spring記事人気No8
Java
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得