スプリングブートでプロファイルを設定する方法


  • 最初のステップは、プロジェクトを作成することですSpring Initializer イメージに示すようにデフォルト値を使用する.または、現在のプロジェクトで統合している場合は、次の手順に進むことができます.
  • クリエイトapplication.yaml Spring/main/resourcesフォルダのスプリングブートプロジェクトのファイル.
  • 今すぐ作成.yaml 各プロファイルのファイルを設定します.For dev 私のファイルに名前を付けるapplication-dev.yaml , for staging application-staging.yaml
  • 今すぐあなたのpom.xml ファイルをコピーする
  • <profiles>
            <profile>
                <id>dev</id>
                <properties>
                    <activatedProperties>dev</activatedProperties>
                </properties>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
            </profile>
            <profile>
                <id>staging</id>
                <properties>
                    <activatedProperties>staging</activatedProperties>
                </properties>
            </profile>
    </profiles>
    
    ここでは2つのプロファイルを定義していますdev and staging . ライン<activeByDefault>true</activeByDefault> プロファイルdev スプリングブートプロジェクトの実行中にプロファイルが選択されていない場合はアクティブになります.
  • 現在application.yaml ファイルを次の行
  • spring:
      profiles:
        active: @activatedProperties@
    
    これは<activatedProperties> あなたのタグpom.xml
  • インapplication-dev.yaml 次の行をコピーします
  • spring:
      profiles: dev
    server:
      port: 8093
    application:
      current-profile: dev
    
  • インapplication-staging.yaml
  • spring:
      profiles: staging
    server:
      port: 8094
    application:
      current-profile: staging
    
  • 注意port プロパティapplication-dev.yaml and application-staging.yaml 異なる.
  • さて、アプリケーションを実行するにはdev プロファイルを実行します.mvn spring-boot:run -Dspring-boot.run.profiles=devステージング用mvn spring-boot:run -Dspring-boot.run.profiles=staging
  • For dev , アプリケーションがポート上で実行されます8093staging , on 8094 .
  • プロファイルを使用する利点は、異なる環境で異なるプロパティを設定できます.別の利点は、異なる環境で異なる変数を使用することです.これを示すために、我々はクラスをつくることができますActiveProfile.java アプリケーションで.
  • 次の行をコピーします
  • import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.event.ContextRefreshedEvent;
    import org.springframework.context.event.EventListener;
    import org.springframework.stereotype.Component;
    
    @Component
    public class ActiveProfile {
    
        @Value("${application.current-profile}")
        private String profile;
    
        @EventListener(ContextRefreshedEvent.class)
        public void onStartUp() {
            System.out.println("The current profile is : " +  profile);
        }
    }
    
    
    注釈onStartUp() 機能付き@EventListener(ContextRefreshedEvent.class) は、この関数がアプリケーションの準備が完了した直後に実行されることを意味します.@Value 注釈はどちらかから値を取りますapplication-dev.yaml or application-staging.yaml あなたがそれを実行するプロファイルに応じて.
  • アプリケーションを実行した後、その結果が表示されますSystem.out.printlndev or staging
  • 上記のチュートリアルのコードは次のとおりですGithub Link