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

Spring Bootの@Profileとspring.profiles.activeの使い方を完全ガイド!初心者向けプロファイル活用術

プロファイル活用:@Profile と spring.profiles.active の基本
プロファイル活用:@Profile と spring.profiles.active の基本

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

生徒

「Spring Bootで環境ごとに設定を切り替える方法ってありますか?」

先生

「Spring Bootでは、プロファイルという仕組みを使って、開発環境や本番環境など、目的に応じた設定の切り替えが可能です。」

生徒

「そのプロファイルって、具体的にどうやって使うんですか?@Profileとかspring.profiles.activeとか見たことあります。」

先生

「とても良い着眼点です!それでは、@Profileアノテーションとspring.profiles.activeの基本的な使い方を詳しく解説していきましょう。」

1. Spring Bootにおけるプロファイルとは?

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

1. Spring Bootにおけるプロファイルとは?
1. Spring Bootにおけるプロファイルとは?

Spring Bootのプロファイル機能は、アプリケーションの実行環境に応じて、使用するBeanや設定を切り替えるための便利な仕組みです。たとえば、開発環境ではH2データベース、本番環境ではMySQLなど、同じコードベースでも環境によって構成を変更できます。

このように、環境別の構成を柔軟に管理できるのが、Spring Bootにおけるプロファイルの強みです。

2. spring.profiles.activeの基本的な使い方

2. spring.profiles.activeの基本的な使い方
2. spring.profiles.activeの基本的な使い方

spring.profiles.activeは、どのプロファイルを有効にするかを指定するための設定キーです。指定されたプロファイルに対応するBeanや設定ファイルがアクティブになります。

指定方法は複数あります。

  • application.properties で指定
  • コマンドライン引数で指定
  • 環境変数で指定

たとえば、application.properties内に次のように書きます:


spring.profiles.active=dev

または、起動時にコマンドライン引数で指定する方法もあります。


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

このようにして、任意のプロファイルを指定して起動させることが可能です。

3. application-{profile}.properties の活用

3. application-{profile}.properties の活用
3. application-{profile}.properties の活用

Spring Bootでは、プロファイルごとの設定をファイル分割して管理することができます。ファイル名の末尾にプロファイル名をつけることで、そのプロファイルが有効なときだけ読み込まれるようになります。

例として、次のような設定ファイルを用意します:

  • application.properties(共通設定)
  • application-dev.properties(開発環境用設定)
  • application-prod.properties(本番環境用設定)

そして、spring.profiles.activeでdevを指定すれば、application-dev.propertiesの内容が読み込まれます。

4. @Profileアノテーションの基本

「4. @Profileアノテーションの基本」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. @Profileアノテーションの基本
4. @Profileアノテーションの基本

@Profileアノテーションは、Javaクラスやメソッドに付けて、特定のプロファイルがアクティブなときだけBeanとして登録するために使用されます。

次の例では、開発環境専用のBeanを定義しています:


@Configuration
@Profile("dev")
public class DevConfig {

    @Bean
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.H2)
            .build();
    }
}

このDevConfigクラスは、プロファイルにdevが指定されているときだけ有効になります。

5. プロファイルを使ったBeanの切り替え例

5. プロファイルを使ったBeanの切り替え例
5. プロファイルを使ったBeanの切り替え例

Spring Bootアプリケーションでよく使われるのが、データベースやメール送信機能などの環境依存コンポーネントを、プロファイルごとに切り替える方法です。

以下に、開発と本番で異なる実装を提供する例を紹介します。


public interface MailService {
    void sendMail(String to, String message);
}

@Service
@Profile("dev")
public class DummyMailService implements MailService {
    public void sendMail(String to, String message) {
        System.out.println("開発用ダミーメール:" + to + " " + message);
    }
}

@Service
@Profile("prod")
public class RealMailService implements MailService {
    public void sendMail(String to, String message) {
        // 本番用のメール送信処理
    }
}

このように、開発時はログ出力だけにし、本番では実際にメールを送信する実装を切り替えることができます。

6. プロファイルが設定されていないときの動作

6. プロファイルが設定されていないときの動作
6. プロファイルが設定されていないときの動作

プロファイルが明示的に指定されていない場合、@Profileが付いたクラスは無視され、読み込まれません。そのため、必ずspring.profiles.activeの指定を行うことが重要です。

なお、条件に応じてプロファイルを自動切り替えしたい場合は、デフォルトプロファイルの設定も活用できます。


spring.profiles.default=dev

7. 複数のプロファイルを同時に指定する

「7. 複数のプロファイルを同時に指定する」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. 複数のプロファイルを同時に指定する
7. 複数のプロファイルを同時に指定する

Spring Bootでは、カンマ区切りで複数のプロファイルを同時にアクティブにすることが可能です。


spring.profiles.active=dev,test

このようにすると、devとtestの両方の設定やBeanが有効になります。複雑な構成を実現したいときに便利です。

8. Spring Bootプロファイル機能の活用シーン

8. Spring Bootプロファイル機能の活用シーン
8. Spring Bootプロファイル機能の活用シーン

プロファイルの活用は、開発・テスト・本番の各環境に応じた設定を安全に管理するために不可欠です。

  • 開発環境では、H2などのインメモリDBを使用
  • テスト環境では、モックサービスやStubを有効化
  • 本番環境では、実際のデータベースやメール送信サービスを使う

このように、Spring Bootのプロファイル機能を使えば、コードの修正を最小限に抑えつつ、柔軟な環境構成を実現できます。

9. Spring Bootアプリケーションでプロファイルを確認する方法

9. Spring Bootアプリケーションでプロファイルを確認する方法
9. Spring Bootアプリケーションでプロファイルを確認する方法

現在アクティブになっているプロファイルを確認するには、次のようなコードを使用します。


@RestController
public class ProfileCheckController {

    @Autowired
    private Environment environment;

    @GetMapping("/profile")
    public String getActiveProfile() {
        return String.join(", ", environment.getActiveProfiles());
    }
}

このエンドポイントにアクセスすると、現在有効なプロファイルを確認することができます。

カテゴリの一覧へ
新着記事
New1
Spring
Spring Bootとは?初心者向けにわかりやすく解説【Spring入門】
更新記事
New2
Java
Javaのラムダ式で戻り値とvoidの使い方を解説!returnの書き方も完全理解
更新記事
New3
Java
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
更新記事
New4
Java
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
更新記事
人気記事
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開発環境「Eclipse(Pleiades)」のインストール方法とメリットを初心者向けに解説
No.3
Java&Spring記事人気No3
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.4
Java&Spring記事人気No4
Spring
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.5
Java&Spring記事人気No5
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.6
Java&Spring記事人気No6
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.7
Java&Spring記事人気No7
Spring
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定
No.8
Java&Spring記事人気No8
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介