Spring bootインポートプロファイル

3769 ワード

@ImportResource:locationsプロパティを使用して対応するxmlプロファイルをロードするとともに、@コンフィギュレーション注釈とともに使用する必要があります.コンフィギュレーションクラスとして定義します.
@Configuration
@ImportResource(locations = {"classpath:druid.xml","classpath:spring-mybatis.xml"})
public class ConfigDataSource {

}

@PropertySource:value:ここでは元の@ConfigurationPropertiesのlocations encodingの代わりにプロファイルを指定します:プロファイルを読み込むときのエンコードを指定します.このencodingは重要です.デフォルトを使用すると読み取り文字化けが発生する可能性が高い場合は、@PropertySource注記でpropertiesファイルから対応するkey-value値を取得できます.変数を付与する.
@PropertySource({
    "classpath:config.properties",
    "classpath:db.properties" 
})

@PropertySources({
    @PropertySource("classpath:config.properties"),
    @PropertySource("classpath:db.properties")
})

@PropertySource(value= {"classpath:config/app-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8",name="app-dev.properties")

上記のコードの目的はclasspathパスのconfigファイルのapp-dev.propertiesをロードすることです.ここでencodingは、属性ファイルを読み込むために使用される符号化を指定するために使用され、通常はUTF-8を使用します.ignoreResourceNotFoundは、指定したプロファイルにエラーがないかどうか、デフォルトでfalseを意味します.たとえば、上記で指定したロードプロパティファイルはapp-dev.propertiesです.ファイルが存在しない場合、ignoreResourceNotFoundがtrueの場合、プログラムはエラーを報告しません.ignoreResourceNotFoundがfalseの場合、プログラムは直接エラーを報告します.実際のプロジェクト開発では、ignoreResourceNotFoundをfalseに設定することが望ましい.このパラメータのデフォルト値はfalseです.value値は、ロードするプロパティファイルを設定し、複数を一度にロードできます.nameの値はapp-dev.propertiesを設定します.この値はSpringbootの環境で一意でなければなりません.設定しない場合、値は「class path resource[config/app-dev.properties]」です.なぜ「class path resource[config/app-dev.properties]」なのでしょうか.これはSpringのリソースファイルのパッケージクラスResourceに関連しています.上記で設定したvalue値は「classpath:config/app-dev.properties”を選択すると、Springはclasspathで始まることがわかります.したがって、最終的にはResourceのサブクラスClassPathResourceが使用されます.fileで始まる場合、最終的に使用されるクラスはFileSystemResourceです.前述したResourceクラスを理解した後です.@PropertySourceでname値が設定されていない場合、name値の生成ルールは、value値に基づいて最終パッケージのResourceが検索されます.Ceサブクラスは、特定のResourceサブクラスインスタンスオブジェクトのgetDescriptionメソッドを呼び出し、getDescriptionメソッドの戻り値は最終的なname値です.
@ConfigurationProperties:
        :
locations:      
prefix:                 
@ConfigurationProperties(prefix = "spring.datasource.druid")  
@PropertySource( name="datasource-dev.properties",value= {"classpath:config/datasource-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8")
public class DruidDataSourceConfig  {
    private  String url;
  }

属性の接頭辞がspring.datasource.druidであることを示します.これによりSpringbootは処理時に現在のクラスのすべてのフィールドをスキャンし、属性の検索と組み立てを行います.たとえば、私たちが構成したprefix=「spring.datasource.druid」を選択します.のフィールドがintタイプである場合、エラーが発生するに違いありません.この場合、許容できる場合は、属性値をtrueに設定する必要があります.このパラメータ値のデフォルトはfalseです.