springboot複数のプロファイルをロードする


記事の目次
  • 文章は
  • を参照してください。
  • デフォルトのプロファイル
  • springbootは、複数のプロファイルを同時にロードする方法を説明します。
  • は、プロファイルの属性をエンティティクラス
  • に割り当てる。
  • カスタムプロファイル
  • 文章の参考
  • SpringBootプロファイルの詳細
    標準設定ファイル
    私たちはspringbootプロジェクトを作成する時、システムはデフォルトで私たちのためにsrc/main/Java/resourceディレクトリの下でappication.propertiesを作成します。
    どのように複数のプロファイルを同時に読み込むか?
  • springbootデフォルトは、src/main/resourceフォルダにappration.propertiesデフォルトプロファイルをロードする
  • です。
    フォーマットはappication-{profile}.propertiesです。ここではあなたの環境標識に対応しています。
  • appication.propertiesにspring.profiles.active=devを追加して、database
  • #         ,     application.properties application-database.properties  application-dev.properties       
    spring.profiles.active = dev,database
    
  • システムは、src/main/resourceディレクトリの下のappration.properties appration-database.properties appration-dev.propertiesの3つのプロファイルをロードしました。
    プロファイルの属性をエンティティクラスに割り当てます。
  • appication-dev.propertiesファイル内容
  • dev.name=liumei
    
  • javaエンティティクラス
  • package com.hb.config;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    @ConfigurationProperties(prefix="dev")
    public class DevConfig {
    	// application-dev.properties dev.name  
    	private String name;
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    }
    
    @ConfigrationProperties(prefix=「dev」)は、すべての設定情報の中のdev.nameをロードする値を意味する。nameの属性はgetとsetの方法が必要です。
    カスタムプロファイル
    上で紹介したのは配置ファイルをappication.ymlに書いています。時々私達は配置をすべてappicationの配置ファイルに書きたくないです。この時、私達がカスタマイズした配置ファイルが必要です。例えば、test.properties:
    com.forezp.name=forezp
    com.forezp.age=12
    
    このプロファイルの情報をJavabeanにどうやって付与しますか?
    @Configuration
    @PropertySource(value = "classpath:test.properties")
    @ConfigurationProperties(prefix = "com.forezp")
    public class User {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    最新バージョンのspringbootには、この3つの注釈が必要です。
  • @Configration
  • @PropertySource(value=「classipath:test.properties」)
  • @ConfigrationPropties(prefix=「comp.forezp」)1.4バージョンでは
  • が必要です。