文末是系列文章
IC の Spring 統合リソース読み込み戦略
Spring フレームワークのコアは IoC (Inversion of Control) です。これは、アプリケーションのオブジェクト依存関係の管理と制御をコンテナーに反転させます。Spring IoC コンテナーでは、コンポーネントの作成と構成は、アプリケーションで必要なさまざまなリソース (クラス、構成ファイル、プロパティ ファイル、画像など) を含む外部構成ファイル (XML、Java 注釈など) を介して行われます。 、オーディオなど)。これらの構成情報の中で、リソースのロードと取得には統一されたメカニズムが必要であり、これが Spring の統一されたリソースのロード戦略です。
ローディング戦略
Spring の統一されたリソース読み込み戦略は、さまざまなタイプのリソースへのアクセスと管理をカプセル化するResource
インターフェイス。Spring は、次のようなさまざまなタイプのResource
実装。
UrlResource
: ネットワーク URL、ファイル システム URL などの URL リソースにアクセスするために使用されます。ClassPathResource
: クラスファイル、構成ファイルなど、クラスパスの下のリソースにアクセスするために使用されます。FileSystemResource
: ローカル ファイル システム内のリソースにアクセスするために使用されます。ServletContextResource
: Web アプリケーションで JSP、サーブレットなどの ServletContext リソースにアクセスするために使用されます。ByteArrayResource
: メモリ内のバイト配列リソースにアクセスするために使用されます。
Spring はさまざまなタイプのリソースをResource
インターフェースため、アプリケーションは同じ API を使用してさまざまなタイプのリソースにアクセスできます。
ローディングプロセス
Spring がリソースをロードするプロセスは、通常、次の 2 つのステップに分けられます。
- リソースの場所: リソースの場所 (URL、ファイル パス、クラス パスなど) に従って、リソースの
Resource
オブジェクト。 - リソースの読み込み:
Resource
オブジェクトリソースのデータを読み込み、データをResource
オブジェクトにカプセル化して返します。
Spring では、リソースはResourceLoader
インターフェース、そのサブインターフェースはResourcePatternResolver
ワイルドカードと Ant スタイルのパス マッチングのサポートを提供します。アプリケーションにリソースをロードするために使用できるApplicationContext
典型的ResourceLoader
な。ResourcePatternResolver
サンプルコード
以下は、Spring の統合リソース読み込み戦略の使用法を示す簡単なサンプル コードです。
import org.springframework.core.io.*;
public class ResourceLoaderDemo {
public static void main(String[] args) {
ResourceLoader loader = new DefaultResourceLoader();
Resource resource1 = loader.getResource("classpath:config.properties");
Resource resource2 = loader.getResource("file:/path/to/file.txt");
Resource resource3 = loader.getResource("https://example.com/image.jpg");
System.out.println("Resource1 exists: " + resource1.exists());
System.out.println("Resource2 exists: " + resource2.exists());
System.out.println("Resource3 exists: " + resource3.exists());
}
}
上記のコードは、SpringResourceLoader
とResource
インターフェースを使用してさまざまなタイプのリソースをロードする方法を示しています。その中には、DefaultResourceLoader
Spring が提供するデフォルトのResourceLoader
実装、クラスパス、ファイル システム、および URL リソースをロードできます。この例では、 と プレフィックスを使用してclasspath:
さまざまなfile:
種類のリソースを検索し、メソッドを使用してリソースが存在するかどうかを確認します。https:
exists()
メソッド呼び出しグラフ
以下は、Spring の統合リソース読み込み戦略の内部実装を理解するのに役立つ、サンプル コードに含まれるクラスとメソッドの呼び出し図です。
+--------------------+ 1 1 +------------------------+
| ResourceLoaderDemo +---------+ ResourceLoader |
+--------------------+ +------------------------+
| - main() | | + getResource() |
+--------------------+ +------------------------+
|
|
+----------------------+ 1 * +-------------------+
| DefaultResourceLoader +-------+ Resource |
+----------------------+ +-------------------+
| - getResource() | | + exists() |
+----------------------+ +-----------+
|
|
+-----------------------+ 1 1 +----------------------+
| AbstractResource +-------+ Resource |
+-----------------------+ +----------------------+
| - exists() |
| - getDescription() |
| - isOpen() |
| - isFile() |
| - getInputStream() |
| - getFile() |
| - contentLength() |
| - lastModified() |
| - createRelative() |
+-----------------------+
上記のコール グラフは、interfaces、 classes、 interfacesResourceLoader
の関係と、 interfaces が提供するメソッドを示しています。DefaultResourceLoader
Resource
Resource
結論は
Spring の統一されたリソース読み込み戦略は非常に強力で柔軟なメカニズムであり、開発者がアプリケーション内のさまざまなリソースを簡単に管理およびアクセスするのに役立ちます。実際のアプリケーションでは、最適なリソース負荷効果を達成するために、さまざまなニーズに応じて適切なResource
実装。ResourceLoader
Resource
interfaceの実装では、Spring は次のような他の多くの実装クラスも提供します。
UrlResource
: URL タイプのリソースをロードするために使用されます。ClassPathResource
: クラスパスの下にリソースをロードするために使用されます。FileSystemResource
: ファイル システムにリソースをロードするために使用されます。ServletContextResource
: ServletContext にリソースをロードするために使用されます。
さらに、Spring は、ResourceUtils
や などResourcePatternUtils
これらは、開発者がResource
インターフェースResourceLoader
。
つまり、Spring の統一されたリソース読み込み戦略は、開発者に非常に便利で強力なリソース読み込み機能を提供します。これは、最新の柔軟でスケーラブルなアプリケーションを構築するための重要な基盤です。実際のアプリケーションでは、ビジネス ニーズを満たすために Spring リソース ローディングをより適切に使用するために、Spring リソース ローディングの内部実装原則を深く理解する必要があります。
核となるソースコード解析・SpringMVC・JavaPub
ハードコアなソースコードの解析・MyBatis・JavaPub
ハードコアなソースコードの解析・Elastic-Job・JavaPub
ハードコアなソースコードの解析・GoLang・JavaPub