Javaのクラスローダーの概念は、Javaランタイムの環境の一部であり、クラスの動的をJava仮想マシン(JVM)にロードする責任があります。 Javaアプリケーションは、クラスローダーを使用して、スタートアップ中にすべてのクラスをロードするのではなく、クラスファイルをオンデマンドでロードします。
主な機能:
動的荷重
:参照時にクラスはオンデマンドでロードされます。
委員会モデル
:父親の委員会モデルに続いて、ローカルロードを試す前に、荷物クラスの要求が親ローダーに渡されます。 -
分離:クラスの分離を維持するのに役立ちます。これは、アプリケーションサーバーなどの複雑なシステムで特に役立ちます。
-
クラスローダーのタイプ:
ガイダンスクラスローダー- :
、、その他からコアJavaクラスをロードします。
JVMの一部がネイティブの方法で実装されています。
- 拡張ローダー:
Java拡張機能(- )からクラスをロードします。
java.lang
java.util
- Application/System Class Loader
:
アプリケーションのアプリケーション(- 環境変数)からクラスをロードします。
- カスタマイズされたクラスローダー
jre/lib/ext
:
ユーザー定義のクラスローダーは、デフォルトの読み込み動作を拡張または変更するために使用されます。
-
クラスローダーメソッド:-
CLASSPATH
:指定された名前のクラスを見つけます。
:委員会モデルを使用してクラスを読み込みます。 -
:バイト配列はクラスインスタンスに変換されます。
スプリングのクラスローダー
springフレームワークでは、スプリングアプリケーションがクラスを動的にロードし、実行時にリソースを管理するため、クラスローダーの概念は非常に重要です。 SpringとJavaのクラスローダーメカニズムは、クラスとリソースの読み込みを強化するために統合されます。
- 春の使用:
findClass(String name)
- ロードされた豆と構成
loadClass(String name)
:
springは、クラスローダーを使用して、構成ファイルで定義されているBeanをロードするか、- Annotationクラスを使用します。
defineClass(byte[] b)
ロードリソース
:
<code>引导类加载器
↑
扩展类加载器
↑
应用程序类加载器
↑
自定义类加载器(如有)</code>
ログイン後にコピー
ログイン後にコピー
抽象化を提供します。舞台裏では、クラスローダーを使用してリソースを分析します。
例:
<code>引导类加载器
↑
扩展类加载器
↑
应用程序类加载器
↑
自定义类加载器(如有)</code>
ログイン後にコピー
ログイン後にコピー
- ホットローディング:
Spring Boot DevTools
- カスタムクラスローダーなどのツールは、開発プロセス中にクラスを動的にリロードします。
カスタマイズされたクラスローダーシーン :-
スプリングアプリケーションがコンテナまたはマイクロサービスに展開されている場合、通常、依存関係を分離するためにカスタマイズされたクラスローダーが実装されます(たとえば、TomcatやKubernetesなど)。
-
面に直面するアスペクト指向プログラミング(AOP)
:
- SpringのAOPは、通常、クラスローダーを介して動的にロードされるプロキシクラスを使用します。
springのカプセル化されたクラスローダーがリソースの読み込みを簡素化します。
クラスローダーは通常、特定のスレッドにアクセスするために使用され、Springを3番目のパーティライブラリとシームレスに統合できます。
-
DefaultResourceLoader
一般的な例:
- クラスローダーを使用してファイルからBeanをロードします。
ContextClassLoader
javaとspringの重要な違い:
以上がSpring-:classloader-in-java-vs-springの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。