Dieser Artikel vertieft das Verständnis der dynamischen Proxy und der AOP -Programmierung durch ein kleines Framework für die Verpackung und Konfiguration von AOP -Funktionen, die von Dynamic Proxy implementiert werden.
Erstellen Sie ein Objekt der entsprechenden Klasse basierend auf dem Wert (Klasse Vollständiger Name), der dem Schlüssel xxx der Konfigurationsdatei entspricht.
Wenn und nur der Wert, der XXX entspricht, ist com.iot.proxy.aopframework.ProxyFactoryBean , das entsprechende dynamische Proxy -Klasse -Objekt wird generiert. Die Zielklassen- und Benachrichtigungs -Implementierungsklasse des Proxy -Objekts werden von xxx.target bzw. xxx.advice konfiguriert.
config.propertiest befindet sich im Aopframework -Paket
#xxx = java.util.ArrayList
xxx = com.iot.proxy.aopframework.proxyfactorybean
xxx.advice = com.iot.proxy.myadvice
xxx.target = java.util.ArrayList
Paket: com.iot.proxy.aopframework , mit den folgenden Klassen/Schnittstellen:
Paket com.iot.proxy.aopframework; Import Java.lang.reflect.Method;/*** Erstellt von Brian am 2016/2/2. */public interface Ratschläge {void Beeremethod (Methode Methode); void Aftermethod (Methode Methode);} Paket com.iot.proxy.aopframework; Import Java.lang.reflect.Method;/*** Erstellt von Brian am 2016/2/2. */public class myAdvice implementiert Rat {long begintime = 0; @Override public void beeemethod (Methode Methode) {System.out.println (methode.getName ()+"Before"+BeginTime); Begintime = System.CurrentTimemillis ();}@überschrieben öffentliche void Aftermethod (Methode Methode) {Long Endtime = überschrieben. System.currentTimemillis (); System.out.println (method.getName ()+ "Kosten Gesamtkosten"+ (Endime-Begintime));}} Paket com.iot.proxy.aopframework; import Java.io.ioxception; Import Java.io.inputStream; Import Java.util.properties;/*** Erstellt von Brian am 2016/2/2. */public class beanfactory {Eigenschaften Eigenschaften = neue Eigenschaften (); public beanfactory (InputStream InputStream) {try {properties.load (inputStream);} catch (ioException e) {E.printstacktrace ();}} öffentlich -Objekt -Objekt -Name (String name) {{name) {{name) {{name) {{name) {{name) {{name) name (String name) {{name) {{name) {{name) {{name) {{name) {{name) {{name) name (string name) {Class clazz = class.forname (className); bean = clazz.Newinstance ();} catch (classNotFoundException e) {e.printstacktrace ();} catch (InstantiationException e) {E. printstacktrace ();} catch (illyAccessException E) {E.Printstacktrace ();} ilalaccessExced. ProxyFactoryBean) {ProxyFactoryBean ProxyfactoryBean = (ProxyfactoryBean) Bean; Ratschläge = null; Object toget = null; try {Ratschläge = (Ratschläge) class.Forname (Properties.getProperty (Name+". Class.forname (properties.getProperty (name+". Ziel")). NewInstance ();} catch (InstantiationException e) {e.printstacktrace ();} catch (illegalAccessException e) {E.printstacktrace ();} catch (classnotSexception E) E) {E.printstacktrace (); {e.printStackTrace ();} proxyfactoryBean.setAdvice (Ratschläge); Paket com.iot.proxy.aopframework; import Java.lang.reflect.invocationHandler; Import Java.lang.Reflect.Method; Import Java.lang.reflect.proxy;/*** Erstellt von Brian unter 2016/2/3. */public class ProxyFactoryBean {private Objektziel; {Ratschläge. setAdvice (Ratschläge) {this.advice = Ratschläge;}} Paket com.iot.proxy.aopframework; Import Java.io.inputStream; Import Java.util.Collection;/*** Erstellt von Brian am 2016/2/3. */public class aopframeworkTest {public static void main (String [] args) {InputStream InputStream = AOPFRAMEWORKTEST.CLASS.getResourceAsStream ("config.Properties"); Object Bean = New BeanFactory (InputStream) .getbean ("xxx"); System.out.println (bean.getClass (). GetName ()); ((Sammlung) Bean .clear ();}}Die Ausgabe ist:
com.sun.proxy. $ proxy0
vorzüglich um 0 klar
Klare Kosten insgesamt 0
Die Ausgabe ist:
Java.util.ArrayList
Es ist zu sehen, dass das Ändern der Konfigurationsdatei die laufenden Ergebnisse des Codes ändern und so flexible Ergebnisse erzielt.
Das obige ist der gesamte Inhalt dieses Artikels über den kleinen Framework -Instanzcode für die Verpackung und Konfiguration der AOP -Funktionen von Java. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!