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!