Das Konzept des Klassenladers in Java
Der
Klasse Loader
in Java ist Teil der Umgebung der Java -Laufzeit und für das Laden der Klassendynamik in die Java Virtual Machine (JVM) verantwortlich. Die Java -Anwendung verwendet einen Klassenlader, um Klassendateien auf Bedarf zu laden, anstatt alle Klassen während des Starts zu laden.
Hauptmerkmale:
Dynamisches Laden
: Die Klasse wird bei der Referenz auf Bedarf geladen.
- Das Kommissionsmodell : Nach dem Modell des Vaters werden die Anfragen der Ladungsklasse an den übergeordneten Lader übergeben, bevor sie die lokale Belastung ausprobieren.
Isolierung - : Es hilft, die Klassenisolierung aufrechtzuerhalten, was besonders in komplexen Systemen wie Anwendungsservern nützlich ist.
Art des Klassenloaders: -
Der Leitklasse -Loader
:
Laden Sie die Kern -Java -Klasse von ,
und anderen.
- Ein Teil von JVM wird auf native Weise implementiert.
- Erweiterungsload
java.lang
: java.util
Laden Sie die Klasse aus der Java -Erweiterung (- ).
- Anwendungs-/Systemklassenlader :
Laden Sie die Klasse aus der Anwendung der Anwendung (- Umgebungsvariable).
jre/lib/ext
Customized Class Loader - :
Benutzer -definierter Klassenlader wird verwendet, um das Standard -Ladeverhalten zu erweitern oder zu ändern. Klassenladermethode:
-
: Finden Sie eine Klasse mit einem angegebenen Namen.
: Verwenden Sie das Kommissionsmodell, um die Klasse zu laden. -
: Das Byte -Array wird in eine Klasseninstanz konvertiert.
hierarchische Struktur der Klassenlader:
- Der Klassenlader im Frühjahr
findClass(String name)
im Spring Framework
- ist das Konzept des Klassenladers sehr wichtig, da die Spring -Anwendung die Klasse dynamisch lädt und die Ressourcen während der Laufzeit verwaltet. Der Klassenladermechanismus von Spring und Java integriert sich zur Verbesserung der Klasse und der Ressourcenbelastung.
loadClass(String name)
Verwendung im Frühjahr: -
defineClass(byte[] b)
geladene Bean und Konfiguration
:
Spring verwendet einen Klassenlader, um die in der Konfigurationsdatei definierte Bean zu laden oder die Annotationsklasse
<code>引导类加载器
↑
扩展类加载器
↑
应用程序类加载器
↑
自定义类加载器(如有)</code>
Nach dem Login kopieren
Nach dem Login kopieren
zu verwenden.
Laden Ressourcen : laden Sie
Spring bietet eine
-Ftraktion zum Laden von Dateien, URL- oder Klassenpfadressourcen. Hinter der Szene verwendet es einen Klassenlader, um Ressourcen zu analysieren.
-
Beispiel:
<code>引导类加载器
↑
扩展类加载器
↑
应用程序类加载器
↑
自定义类加载器(如有)</code>
Nach dem Login kopieren
Nach dem Login kopieren
- heißes Laden :
Spring Boot Devtools
- Tools wie benutzerdefinierte Klassenlader laden die Klasse während des Entwicklungsprozesses dynamisch neu.
Customized Class Loader Szene : -
Wenn die Federanwendung in einem Container oder Mikroservice bereitgestellt wird, werden normalerweise angepasste Klassenlader implementiert, um Abhängigkeiten (z. B. in Tomcat oder Kubernetes) zu isolieren.
-
Aspekt -orientierte Programmierung (AOP)
:
AOP von - Spring verwendet Proxy -Klassen, die normalerweise dynamisch durch Klassenlader geladen werden.
-
Spring Class Loader Abstraktion:
Spring eingekapselten Klassenlader zur Vereinfachung der Ressourcenbelastung.
Der Klassenlader wird normalerweise zum Zugriff auf bestimmte Threads verwendet, sodass die Feder nahtlos in die dritte -party -Bibliotheken integriert werden kann. -
DefaultResourceLoader
Häufige Beispiele: -
ContextClassLoader
Verwenden Sie den Klassenloader, um Bean aus der Datei zu laden:
Java und Federschlüsselunterschiede:
<code class="language-java">Resource resource = new ClassPathResource("application.properties");</code>
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonSpring-: Classloader-in-Java-VS-Spring. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!