Maison > Java > javaDidacticiel > Analyse sur le principe du proxy dynamique en Java

Analyse sur le principe du proxy dynamique en Java

黄舟
Libérer: 2017-10-16 10:17:49
original
1919 Les gens l'ont consulté

Cet article présente principalement des informations pertinentes sur l'analyse des principes du proxy dynamique Java. J'espère que cet article pourra aider tout le monde à maîtriser les principes du proxy dynamique. Les amis dans le besoin peuvent se référer à

Analyse Java de. principe du proxy dynamique

Résumé

La fonction d'interception d'AOP est implémentée par le proxy dynamique en java. Pour parler franchement, il s'agit d'ajouter une logique d'aspect sur la base de la classe cible pour générer une classe cible améliorée (la logique d'aspect est exécutée soit avant l'exécution de la fonction de classe cible, soit après l'exécution de la fonction de classe cible, soit lorsque la fonction de classe cible lève une exception. Spring Le proxy dynamique dans est implémenté à l'aide de Cglib. Ce que nous analysons ici est le mécanisme d'implémentation du proxy dynamique dans le JDK

Comprenons rapidement l'implémentation du proxy dynamique dans le JDK à travers des exemples. 🎜>Exemple

Interface qui nécessite un proxy


Classe qui nécessite un proxy

public interface IHello { 
public void sayHello(); 
}
Copier après la connexion


Classe d'implémentation du processeur d'appel

public class HelloImpl implements IHello { 
public void sayHello() { 
System.out.println(“Hello World…”); 
} 
}
Copier après la connexion


Entrée de la classe de test

public class ProxyHandler implements InvocationHandler { 
private Object target; 
public ProxyHandler(Object target) { 
this.target = target; 
} 
public Object proxyInstance() { 
return Proxy.newProxyInstance(target.getClass().getClassLoader(), 
target.getClass().getInterfaces(), this); 
} 
public Object invoke(Object proxy, Method method, Object[] args) 
throws Throwable { 
System.out.println(“aspect before … “); 
Object result = method.invoke(this.target, args); 
System.out.println(“aspect after … “); 
return result; 
} 
}
Copier après la connexion


Proxy analyse du code source

public class Main { 
public static void main(String[] args) { 
ProxyHandler proxy = new ProxyHandler(new HelloImpl()); 
IHello hello = (IHello) proxy.proxyInstance(); 
hello.sayHello(); 
} 
}
Copier après la connexion


Omission du code non concerné

newProxyInstance() 方法
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal