SpringBoot-Profileマルチ環境運転

16575 ワード

Profileの適用シーン


開発、テスト、生産の3つの異なる環境がある場合は、3つの異なる環境での構成を定義する必要があります.SpringBootではprofileをサポートする3つの方法があります
方法1:propertiesファイルタイプに基づいて、ファイル名にprofileパラメータを追加する
application-{profile}.properties
 :
application-dev.properties
application-test.properties
application-production.properties

方法2:ymlファイルタイプに基づいて、ファイル名にprofileパラメータを追加する
application-{profile}.yml
 :
application-dev.yml
application-test.yml
application-production.yml

方式3:ymlファイルタイプに基づいて、単一ymlフォーマットプロファイルでspringを通過する.profilesプロパティは、複数のprofile構成を定義します.
#  profile, 
server: 
	port: 8080
---
#  dev 
spring:
    profiles: dev
server: 
	port: 8081
---
#  test 
spring:
    profiles: test
server: 
	port: 8082
---
#  prod 
spring:
    profiles: prod
server: 
	port: 8083

プロファイル構成の指定を有効にする


プロファイルに直接書き込み


アプリケーション汎用プロファイルでのプロパティの使用
spring.profiles.active=xxx( x dev、test、prod)

起動時に有効にするprofileを直接書きます(開発環境にのみ適しています)

SpringBootコマンドライン起動時にprofileを指定


もしそうならprofiles.Activeに値が指定されていない場合はspringが指定されていないのみが使用されます.profilesの値、つまり汎用的な構成のみがロードされます.
アプリケーションを起動するときにspringをprofiles.Activeは、環境を変更するたびにプロファイルを手動で変更してコンパイルする必要がないように指定します.
Jarパッケージを実行する場合、コマンドラインを使用してxxx環境パラメータを指定します.
java -jar xxxx.jar --spring.profiles.active=***

コマンドラインの3つのポイントはdev、test、prodと書くことができます.springに注意してください.profiles.Activeの前に「-」が2つあります

Mavenを使用して、パッケージ時に特定のProfilesプロファイルのみをロードします。


様々な理由から、どの環境のパッケージを作成したいのか、この環境を含むプロファイルだけでいいのか、他の環境のプロファイルを含めたくないのか、パッケージ化時に直接環境を指定することができます.

パッケージ化時に使用する環境を指定

  • アプリケーション共通プロファイルでプレースホルダを使用して環境を指定する
  • .
    spring.profiles.active=@profileName@
    

    mavenパッケージで指定した***は、ここのプレースホルダを自動的に置き換えます[@profileName@]
  • はpom.xmlファイルに構成を追加(場所:projectラベル下)
  • 
    <profiles>
        
        <profile>
            <id>devid>
            <properties>
                
                <profileName>devprofileName>
            properties>
        profile>
        
        <profile>
            <id>testid>
            <properties>
                <profileName>testprofileName>
            properties>
        profile>
        
        <profile>
            <id>prodid>
            <properties>
                <profileName>prodprofileName>
            properties>
        profile>
    profiles>
    
  • maven resourceプラグイン(場所:build-->pluginsラベルの下)
  • 
    <plugin>
        <groupId>org.apache.maven.pluginsgroupId>
        <artifactId>maven-resources-pluginartifactId>
        <version>2.7version>
        <configuration>
            
            <delimiters>
                <delimiter>@delimiter>
            delimiters>
            <useDefaultDelimiters>falseuseDefaultDelimiters>
        configuration>
    plugin>
    
  • mavenパッケージングコマンドを使用してパッケージングするときに(***)環境を有効にする構成
  • mvn clean package -Dmaven.test.skip=true -P ***
    

    mavenパッケージ時に指定された-P後の***は、dev、test、prodと書くことができます.
  • コマンドラインjarパッケージを実行する:
  • java -jar xxxx.jar
    

    パッケージ化時にどの環境を使用するかは指定されていません

  • はpom.xmlファイルに構成を追加(場所:projectラベル下)
  • <profiles>
        
        <profile>
            <id>devid>
            <properties>
                <profileName>devprofileName>
            properties>
            
            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
        profile>
        
        <profile>
            <id>testid>
            <properties>
                <profileName>testprofileName>
            properties>
        profile>
        
        <profile>
            <id>prodid>
            <properties>
                <profileName>prodprofileName>
            properties>
        profile>
    profiles>
    
  • mavenパッケージングコマンドを使用してパッケージングするときに(***)環境を有効にする構成
  • mvn clean package
    
  • コマンドラインjarパッケージを実行する:
  • java -jar xxxx.jar