Maison >Problème commun >Quelle est la différence entre le proxy cglib et le proxy dynamique jdk ?

Quelle est la différence entre le proxy cglib et le proxy dynamique jdk ?

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2023-06-12 10:36:5116183parcourir

La différence entre le proxy cglib et le proxy dynamique jdk est que le proxy dynamique JDK crée des instances proxy de l'objet proxy basées sur les interfaces, tandis que le proxy Cglib génère des sous-classes de la classe proxy basées sur l'héritage.

Quelle est la différence entre le proxy cglib et le proxy dynamique jdk ?

Le système d'exploitation de ce tutoriel : système Windows 10, version jdk15, ordinateur Dell G3.

Le proxy dynamique JDK et le proxy Cglib sont tous deux des méthodes d'implémentation de proxy en langage Java. Il existe certaines différences entre les deux en termes d'utilisation, de performances et de scénarios applicables :

1. Créez une instance proxy de l'objet proxy en fonction de l'interface. Lorsqu'un objet doit être proxy, il doit implémenter une ou plusieurs interfaces et s'appuyer sur la bibliothèque JDK. Le proxy dynamique JDK utilise le mécanisme de réflexion pour générer une classe proxy qui contient toutes les interfaces de l'objet proxy et couvre toutes les méthodes de l'interface, qui peuvent proxy l'objet cible.

屏幕截图 2023-06-12 103510.png

Avantages : Pas besoin de référencer des bibliothèques tierces, il peut être exécuté dans l'environnement d'exécution JRE et la génération d'objets proxy est plus simple et plus rapide. Inconvénients : Il ne prend en charge que le proxy basé sur les interfaces et ne peut pas proxy de classes, donc ; son rôle est limité.
  • 2., Proxy Cglib :

Générez des sous-classes de la classe proxy basées sur l'héritage pour ajouter une logique de proxy. Parce qu'il hérite de la classe mandatée, il sera affecté par des attributs non héritables tels que les classes finales, privées et statiques.

屏幕截图 2023-06-12 103555.png

Avantages : Cglib prend en charge les classes proxy. Même s'il n'y a pas d'interface, cela peut être réalisé indirectement en définissant une interface de rappel. Les performances sont supérieures à celles du proxy dynamique JDK et peuvent proxy cibler des objets qui n'implémentent aucune interface.
  • Cglib adopte la méthode de génération dynamique de bytecode dans le processus de génération des classes proxy. La classe proxy est créée et mise en cache dans la mémoire avant d'être chargée par la classe proxy. Elle sera utilisée directement à chaque appel dans le. future. Classe proxy mise en cache. Dans la plupart des cas, les proxys Cglib sont plus adaptés aux scénarios d'interception et d'amélioration de méthodes à grande échelle que les proxys dynamiques JDK.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn