Der Unterschied zwischen cglib-Proxy und dynamischem JDK-Proxy besteht darin, dass der dynamische JDK-Proxy Proxy-Instanzen des Proxy-Objekts basierend auf Schnittstellen erstellt, während Cglib-Proxy Unterklassen der Proxy-Klasse basierend auf Vererbung generiert.
Das Betriebssystem dieses Tutorials: Windows 10-System, JDK15-Version, Dell G3-Computer.
Dynamischer JDK-Proxy und Cglib-Proxy sind beide Implementierungsmethoden von Proxys in der Java-Sprache. Es gibt bestimmte Unterschiede zwischen den beiden in Bezug auf Verwendung, Leistung und anwendbare Szenarien:
Erstellen Sie eine Proxy-Instanz des Proxy-Objekts basierend auf der Schnittstelle. Wenn ein Objekt als Proxy verwendet werden soll, muss es eine oder mehrere Schnittstellen implementieren und auf die JDK-Bibliothek angewiesen sein. Der dynamische JDK-Proxy verwendet den Reflexionsmechanismus, um eine Proxy-Klasse zu generieren, die alle Schnittstellen des Proxy-Objekts enthält und alle Methoden in der Schnittstelle abdeckt, die das Zielobjekt vertreten können. Vorteile: Es ist nicht erforderlich, auf Bibliotheken von Drittanbietern zu verweisen, es kann in der JRE-Laufzeitumgebung ausgeführt werden und die Generierung von Proxy-Objekten ist einfacher und schneller. Nachteile: Es unterstützt nur Proxying basierend auf Schnittstellen und kann daher keine Proxy-Klassen verwenden seine Rolle ist begrenzt. 2., Cglib-Proxy:
Erzeugen Sie Unterklassen der Proxy-Klasse basierend auf Vererbung, um Proxy-Logik hinzuzufügen. Da es die Proxy-Klasse erbt, wird es von nicht vererbbaren Attributen wie endgültigen Klassen, privat und statisch beeinflusst. Vorteile: Cglib unterstützt Proxy-Klassen. Auch wenn keine Schnittstelle vorhanden ist, kann dies indirekt durch Festlegen einer Rückrufschnittstelle erreicht werden. Die Leistung ist höher als beim dynamischen JDK-Proxy und er kann Zielobjekte weiterleiten, die keine Schnittstelle implementieren. Cglib verwendet die Methode der dynamischen Generierung von Bytecode beim Generieren von Proxy-Klassen. Die Proxy-Klasse wird im Speicher erstellt und zwischengespeichert, bevor sie von der Proxy-Klasse geladen wird Zukunft. Zwischengespeicherte Proxy-Klasse. In den meisten Fällen eignen sich Cglib-Proxys besser für groß angelegte Szenarien zum Abfangen und Verbessern von Methoden als dynamische JDK-Proxys.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen cglib-Proxy und dynamischem JDK-Proxy?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn