interface of the object being proxied
1 Public Interface Iscoreservice {2 Public void Addscore (String s,string s1); 3 }
Implementation of the object being proxied
1 Public classScoreserviceimplImplementsiscoreservice{2 intScore = 0;3 PublicList<integer> sList =NewArraylist<integer>();4 5 Public voidAddscore (String s,string s1) {6System.out.println (score+=3);7 Slist.add (score);8 }9}
proxy class
1 Public classLoghandlerImplementsInvocationhandler {2 3 PrivateObject TargetObject;4 5 PublicObject Createproxy (Object targetObject) {6 This. TargetObject =TargetObject;7 returnproxy.newproxyinstance (Targetobject.getclass (). getClassLoader (),8 Targetobject.getclass (). Getinterfaces (),9 This);Ten } One A PublicObject Invoke (Object proxy, Method method, object[] args)throwsThrowable { - -Object obj =NULL; the Try { - Beforelog (); -obj =Method.invoke (TargetObject, args); - Afterlog (); +}Catch(Exception e) { - e.printstacktrace (); + } A at - returnobj; - } - - Private voidBeforelog () { -System.out.println ("called Before"); in } - to Private voidAfterlog () { +System.out.println ("Call after"); - } the *}
Test class
1 Public class testhandler{2 Public Static void main (String [] args) {3 Iscoreservice Servcie = (iscoreservice) loghandler.createproxy (new Scoreserviceimpl ()); 4 Servcie.addscore ("," ""); 5 }6 }
Java Dynamic Agent Insert Log