はじめに
Spring Boot を使っていると、
「開発環境と本番環境で設定を変えたい」
という場面に必ず出会います。
- DB の接続先を変えたい
- ログレベルを変えたい
- モックと本物のサービスを切り替えたい
- 特定の Bean を環境ごとに使い分けたい
こういった“環境ごとの切り替え”を簡単に実現してくれるのが
プロファイル(@Profile) です。
この記事では、プロファイルの基本を
やさしく・実務寄り で整理していきます。
プロファイル(@Profile)とは
一言でいうと、
「環境ごとに使う Bean や設定を切り替える仕組み」
です。
- dev(開発)
- test(テスト)
- prod(本番)
といった環境ごとに、
使う Bean や設定を変えられます。
まずは基本のコードを確認
dev 環境だけで使いたい Bean
Java
@Profile("dev")
@Component
public class DevMailService implements MailService {
...
}prod 環境だけで使いたい Bean
Java
@Profile("prod")
@Component
public class ProdMailService implements MailService {
...
}同じインターフェースを実装していても、
プロファイルによって使われる Bean が変わります。
プロファイルを有効にする方法
application.yml
YAML
spring:
profiles:
active: devこれで dev プロファイルが有効になります。
プロファイルごとに設定ファイルを分ける
Spring Boot では、 application-{profile}.yml という名前で設定を分けられます。
application-dev.yml
YAML
logging:
level:
root: DEBUGapplication-prod.yml
YAML
logging:
level:
root: INFO環境ごとに設定を切り替えられるため、
本番でログが大量に出る事故を防げます。
よくある使い方(実務編)
DB の接続先を切り替える
- dev → ローカル DB
- prod → 本番 DB
メール送信のモックを切り替える
- dev → ログに出すだけ
- prod → 実際にメール送信
外部 API のモックを切り替える
- dev → ダミーのレスポンス
- prod → 本物の API
ログレベルを切り替える
- dev → DEBUG
- prod → INFO
@Profile の動き方をふわっと理解する
1. Spring Boot が起動
↓
2. active プロファイルを確認
↓
3. @Profile が付いた Bean をフィルタリング
↓
4. 該当する Bean だけが登録される
つまり、
プロファイルに合わない Bean は最初から存在しない
ということです。
実務でよくあるつまずき
1. プロファイルが有効になっていない
→ application.yml の設定漏れ。
2. Bean が見つからない
→ @Profile の指定が間違っている。
3. 複数プロファイルを有効にしたい
YAML
spring:
profiles:
active: dev,local4. @Profile のスペルミス
意外と多いです。
@Profile をもっと活かすポイント
1. @Configuration と組み合わせる
設定クラスごと切り替えられます。
2. @ConditionalOnProperty と併用する
細かい条件で Bean を切り替えられます。
3. テストでは @ActiveProfiles を使う
Java
@ActiveProfiles("test")まとめ
プロファイル(@Profile)は、
「環境ごとに Bean や設定を切り替える仕組み」
です。
- dev / test / prod など環境ごとに切り替え
- Bean に @Profile を付けるだけ
- application-{profile}.yml で設定を分離
- DB・ログ・外部 API の切り替えに便利
- 実務で必ず使う機能
難しく聞こえますが、
「環境ごとに使う Bean を変えるための仕組み」
と理解できれば十分です。

decopon
プロファイルを理解すると、
開発・テスト・本番の切り替えがとてもスムーズになります。
設定の事故も減り、安心してデプロイできるようになります。
あなたの開発が、今日より少しだけ楽になりますように。

moco
環境ごとに“使うものを変える”って、なんだかおしゃれだね…

コメント