【Spring Boot】@Profileを使用して、環境によって使用するクラスを分岐する!application.ymlやクラス実装はこんな感じ

インターフェースを用意し、設定によって実装クラスは分岐したいという事はよくあるのではないでしょうか?

そんな時、「@Profile」がよく使用されます

Spring Bootにおける@Profileアノテーションは特定の環境でのみ有効にするためのものです

これを使用することで、異なる環境(開発、テスト、本番など)で異なるクラスを使用することができます
(ダミークラスとか用意できる!)

まず、application.ymlでプロファイルごとに設定を行います
例えば、developmentとproductionの2つのプロファイルを考えてみましょう

# application.yml

spring:
  profiles:
    active: development # アクティブなプロファイルを指定

---

spring:
  profiles: development

# 開発用の設定
myService:
  implementation: com.example.services.MyServiceDevelopment

---

spring:
  profiles: production

# 本番用の設定
myService:
  implementation: com.example.services.MyServiceProduction

次に、MyServiceDevelopmentとMyServiceProductionという実装クラスを作成します

// MyServiceDevelopment.java

package com.example.services;

import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;

@Service
@Profile("development") // developmentプロファイルの場合に有効にする
public class MyServiceDevelopment implements MyService {
    // 実装
}

// MyServiceProduction.java

package com.example.services;

import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;

@Service
@Profile("production") // productionプロファイルの場合に有効にする
public class MyServiceProduction implements MyService {
    // 実装
}

これで、開発環境ではMyServiceDevelopmentが、本番環境ではMyServiceProductionが使用されるようになります

@Profileアノテーションを使用することで、異なる環境での異なる実装を簡単に切り替えることができます

是非フォローしてください

最新の情報をお伝えします