Maison  >  Article  >  Java  >  Quelles sont les méthodes d’implémentation du proxy dynamique Spring ?

Quelles sont les méthodes d’implémentation du proxy dynamique Spring ?

百草
百草original
2024-01-08 10:07:34711parcourir

Comment implémenter le proxy dynamique Spring : 1. Proxy dynamique JDK 2. Proxy dynamique CGLIB. Introduction détaillée : 1. Le proxy dynamique JDK utilise le mécanisme de réflexion du JDK. Il nécessite que l'objet proxy implémente au moins une interface au moment de l'exécution, Spring obtiendra toutes les interfaces de l'objet proxy via le mécanisme de réflexion, puis les fournira. L'interface crée un objet InvocationHandler, qui implémente toutes les méthodes d'interface et transmet tous les appels de méthode à un gestionnaire, etc.

Quelles sont les méthodes d’implémentation du proxy dynamique Spring ?

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

Le framework Spring propose deux types de proxys : le proxy dynamique JDK et le proxy dynamique CGLIB.

1. Proxy dynamique JDK :

Le proxy dynamique JDK utilise le mécanisme de réflexion du JDK, qui nécessite que l'objet proxy implémente au moins une interface. Au moment de l'exécution, Spring obtiendra toutes les interfaces de l'objet mandaté via le mécanisme de réflexion, puis créera un objet InvocationHandler pour ces interfaces. Cet objet implémentera toutes les méthodes d'interface et transmettra tous les appels de méthode à un objet Handler. . Par conséquent, pour utiliser le proxy dynamique JDK, votre classe doit implémenter au moins une interface.

Exemple de code :

@Service  
public class MyServiceImpl implements MyService {  
    // 实现接口方法  
}  
  
@Component  
public class MyComponent {  
    @Autowired  
    private MyService myService;  
}

2. Proxy dynamique CGLIB :

Le proxy dynamique CGLIB utilise la technologie bytecode, qui peut créer dynamiquement une sous-classe au moment de l'exécution et remplacer les méthodes nécessitant un proxy. Par conséquent, en utilisant le proxy dynamique CGLIB, votre classe n’a pas besoin d’implémenter d’interface. Si votre classe n'implémente aucune interface, Spring utilisera le proxy dynamique CGLIB pour créer l'objet proxy.

Exemple de code :

@Service  
public class MyServiceImpl {  
    // 实现业务逻辑  
}  
  
@Component  
public class MyComponent {  
    @Autowired  
    private MyService myService;  
}

Au Spring, les proxys dynamiques JDK sont utilisés par défaut pour créer des objets proxy. Si vous souhaitez que Spring utilise des proxys dynamiques CGLIB pour créer des objets proxy, vous pouvez ajouter la configuration suivante à votre fichier de configuration :

<aop:config proxy-target-class="true">  
    <!-- 其他配置 -->  
</aop:config>

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