Vor kurzem kam ich über die Java Custom Class Loader API. Ich fand eine Verwendung hier drüben, Kamranzafars Blog Ich bin ein bisschen neu im Class Loader-Konzept. Kann jemand im Detail erklären, in welchen Szenarien wir ihn brauchen oder wo wir ihn brauchen?
Custom-Class-Loader sind in größeren Architekturen nützlich, die aus mehreren Modulen / Anwendungen bestehen. Hier sind die Vorteile des benutzerdefinierten Klassenladeprogramms:
Die primäre Verwendung besteht in Anwendungsservern, so dass sie zwei Anwendungen ausführen können und keine Klassenkonflikte haben. Wenn Anwendung 1 über eine Klasse mit demselben Namen wie Anwendung 2 verfügt, lädt die Anwendung 1 mit ihrer benutzerdefinierten Klasse ihre Klasse und die Anwendung 2 ihre Klasse.
Auch wenn eine Klasse von einem benutzerdefinierten Klassenlader geladen wird, ist es möglich, diese Klasse von der JVM zu entfernen. Wieder nützlich in Anwendungsservern.
Ein weiterer Einsatzbereich wäre die Instrumentierung - Eine Möglichkeit, aspektorientierte Programmierung zu betreiben oder einige Persistenz-APIs zu verwenden. Mit einem benutzerdefinierten Classloader können Sie den geladenen Klassen Verhalten hinzufügen, bevor sie an die laufende Anwendung übergeben werden.
Java-Klasse-Loader tun genau das, was der Name andeutet: Laden Sie Klassen in den Speicher, damit sie verwendet werden können.
Klassen sind auch mit dem ClassLoader verknüpft, der sie geladen hat.
Custom-Class-Loader eröffnen daher eine Vielzahl interessanter Möglichkeiten:
Normale Java-Anwendungen müssen sich normalerweise nicht um Klassenlader kümmern. Aber wenn Sie ein Framework oder eine Plattform schreiben, die anderen Code hosten müssen, werden sie viel wichtiger / relevanter.
Tags und Links java classloader