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

Analyse sur le principe du proxy dynamique en Java

黄舟
黄舟original
2017-10-16 10:17:491844parcourir

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!

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