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(); }
Classe d'implémentation du processeur d'appel
public class HelloImpl implements IHello { public void sayHello() { System.out.println(“Hello World…”); } }
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; } }
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(); } }
Omission du code non concerné
newProxyInstance() 方法
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!