Javaはパスパスパスパスのワイルドカードを使ってResourceとprofilesの構成をロードします。
5392 ワード
序文
Springは強力なAntモードのワイルドカードマッチングを提供しており、経路からいくつかのリソースにマッチすることができます。
パスのワイルドカード
Antパスパスのワイルドカードは「?」、「*」、「**」をサポートしています。注意ワイルドカードのマッチングにはディレクトリのセパレータが含まれていません。
「?」:キャラクターにマッチします。例えば「config?xmlは「config 1.xml」にマッチします。
「*」:「cn/config.xml」のように0つ以上の文字列とマッチしますが、「cn/javass/config.xml」にはマッチしません。一方、「cn/config-*.xml」は「cn/config-dao.xml」にマッチします。
「*」:マッチング経路における0個以上のディレクトリ、例えば「cn/***/config.xml」は「cn/config.xml」にマッチし、「cn/javass/spring/config.xml」にもマッチします。「cn/javass/config-*.xml」は「cn/javass/config-dao.xml」にマッチします。つまり「*」を二つの「*」として処理します。
クラスパスとクラスパス*
Springは、クラスパスリソースをロードする際に、プレフィクス「classpath:」を提供することによって、Resourceをロードすることをサポートするだけでなく、プレフィクス「classpath*」を提供して、一致するすべてのクラスパスをロードするResourceをサポートします。
一、「クラスパス」:jarパケットを含むクラスパスの一つであり、一つのリソースのみをロードするために使用されます。複数のマッチの場合も1つだけ戻りますので、複数のマッチが必要な場合は「クラスパス*」プレフィックスを考慮してください。
二、「クラスパス」(jarパケットを含む)の中のすべての整合リソースをロードするために使用されます。ワイルドカードを有するclassipathは、「クラスLoader」の「Eumeration<URL>get Resource(String name)」方法を使用して、ワイルドカード以前のリソースを検索し、マッチングされたリソースをモードマッチングによって取得する。「クラスパス:META-INF/*.LIST」は、まずワイルドカード前のディレクトリ「META-INF」をロードし、その後、経路を巡回してサブパスマッチングを行い、マッチングされたリソースを取得する。
クラスパスはどこで使いますか?
パッケージ化されたプロジェクトをコンパイルすると、ルートディレクトリは
ここでは、このプロジェクトは、ダl層のjarパケットを参照する必要があります。jarカバンに依存しているすべてのクラスは同じレベルです。
実例理解:
このコードはapi層のjarパッケージにあります。
このリソースはdal層のjarカバンの中にあります。
profiles配置環境構成情報
リソースファイルはpomファイル構成を使用します。
@xx@を囲むか、{xx}内部はxmlチェーン式の呼び出しで、以下の通りです。
異なる環境を活性化するためにはprofiles.activeを設定してもいいし、pomファイルのprofilesで定義してもいいです。上のプロファイルをよく見てください。ノードlocalはアクティブに設定されています。
1)デフォルトのアクティブ化
上記のプロファイル構成で設定されているデフォルトのアクティブ環境です。下に示すように
私たちは、Maven操作を行うときに、-Pパラメータ表示の指定された現在アクティブ化されているのはどのprofileですか?例えば、プロジェクトを梱包する時にIDを使ってdevのprofileを使う必要があります。
締め括りをつける
java資源のロードが終わりません。まだたくさんあります。今は時間がないです。これだけです。
ここでは、Javaのパスパスパスパスパスを使って、Resourceとprofilesの構成について詳しく解説した文章を紹介します。Javaパスのワイルドカードを使って構成内容をロードします。以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。
Springは強力なAntモードのワイルドカードマッチングを提供しており、経路からいくつかのリソースにマッチすることができます。
パスのワイルドカード
Antパスパスのワイルドカードは「?」、「*」、「**」をサポートしています。注意ワイルドカードのマッチングにはディレクトリのセパレータが含まれていません。
「?」:キャラクターにマッチします。例えば「config?xmlは「config 1.xml」にマッチします。
「*」:「cn/config.xml」のように0つ以上の文字列とマッチしますが、「cn/javass/config.xml」にはマッチしません。一方、「cn/config-*.xml」は「cn/config-dao.xml」にマッチします。
「*」:マッチング経路における0個以上のディレクトリ、例えば「cn/***/config.xml」は「cn/config.xml」にマッチし、「cn/javass/spring/config.xml」にもマッチします。「cn/javass/config-*.xml」は「cn/javass/config-dao.xml」にマッチします。つまり「*」を二つの「*」として処理します。
クラスパスとクラスパス*
Springは、クラスパスリソースをロードする際に、プレフィクス「classpath:」を提供することによって、Resourceをロードすることをサポートするだけでなく、プレフィクス「classpath*」を提供して、一致するすべてのクラスパスをロードするResourceをサポートします。
一、「クラスパス」:jarパケットを含むクラスパスの一つであり、一つのリソースのみをロードするために使用されます。複数のマッチの場合も1つだけ戻りますので、複数のマッチが必要な場合は「クラスパス*」プレフィックスを考慮してください。
二、「クラスパス」(jarパケットを含む)の中のすべての整合リソースをロードするために使用されます。ワイルドカードを有するclassipathは、「クラスLoader」の「Eumeration<URL>get Resource(String name)」方法を使用して、ワイルドカード以前のリソースを検索し、マッチングされたリソースをモードマッチングによって取得する。「クラスパス:META-INF/*.LIST」は、まずワイルドカード前のディレクトリ「META-INF」をロードし、その後、経路を巡回してサブパスマッチングを行い、マッチングされたリソースを取得する。
クラスパスはどこで使いますか?
パッケージ化されたプロジェクトをコンパイルすると、ルートディレクトリは
META-INF
とBOOT-INF
です。この時、私達はclasesというファイルを見ることができます。それは私達が探しているクラスパスです。ここでは、このプロジェクトは、ダl層のjarパケットを参照する必要があります。jarカバンに依存しているすべてのクラスは同じレベルです。
実例理解:
このコードはapi層のjarパッケージにあります。
このリソースはdal層のjarカバンの中にあります。
profiles配置環境構成情報
<profiles>
<profile>
<!--prd env-->
<id>prd</id>
<properties>
<profiles.active>prd</profiles.active>
</properties>
</profile>
<profile>
<!--local env-->
<id>local</id>
<properties>
<profiles.active>local</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!--UT env-->
<id>ut</id>
<properties>
<profiles.active>ut</profiles.active>
</properties>
</profile>
<profile>
<!-- test env -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
</profiles>
リソースファイルはpomファイル構成を使用します。
@xx@を囲むか、{xx}内部はxmlチェーン式の呼び出しで、以下の通りです。
異なる環境を活性化するためにはprofiles.activeを設定してもいいし、pomファイルのprofilesで定義してもいいです。上のプロファイル
[email protected]@
[email protected]@
正しく解析するには、bulidにプラグインを追加する必要があります。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<!-- -->
<encoding>UTF-8</encoding>
<!-- , ${xxx} @xxx@ -->
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<finalName>profit-monitor</finalName>
</build>
4、profileをアクティブにする1)デフォルトのアクティブ化
上記のプロファイル構成で設定されているデフォルトのアクティブ環境です。下に示すように
<activeByDefault>true</activeByDefault>
2)-Pパラメータを使用してプロファイルをアクティブにすることを示します。私たちは、Maven操作を行うときに、-Pパラメータ表示の指定された現在アクティブ化されているのはどのprofileですか?例えば、プロジェクトを梱包する時にIDを使ってdevのprofileを使う必要があります。
mvn package CPdev
ここでdevがsettings.xmlにdevタグを使用してアクティブ状態にあるprofileであると仮定すると、「-P!」プロfileは現在の操作でプロfileがアクティブにならないことを表しています。締め括りをつける
java資源のロードが終わりません。まだたくさんあります。今は時間がないです。これだけです。
ここでは、Javaのパスパスパスパスパスを使って、Resourceとprofilesの構成について詳しく解説した文章を紹介します。Javaパスのワイルドカードを使って構成内容をロードします。以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。