カテゴリ: 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におけるプロファイルとは?

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アノテーションの基本

@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. 複数のプロファイルを同時に指定する

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());
    }
}

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

Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Thymeleaf
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
更新記事
New2
Thymeleaf
Thymeleaf th:ifとは?使い方と条件分岐のコツを解説
更新記事
New3
Spring
Spring Bootの@Profileとspring.profiles.activeの使い方を完全ガイド!初心者向けプロファイル活用術
新規投稿
New4
Spring
Javaの@EnableWebSecurityアノテーションを完全ガイド!初心者でもわかるSpringセキュリティ設定
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.3
Java&Spring記事人気No3
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.4
Java&Spring記事人気No4
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.5
Java&Spring記事人気No5
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.6
Java&Spring記事人気No6
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.7
Java&Spring記事人気No7
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本

💻 作業効率アップに

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

Logicool Signature M750 を見る

※ Amazon広告リンク