Package Com.sample.sping_ireport.cglib;import Java.lang.reflect.invocationhandler;import Java.lang.reflect.method;import Java.lang.reflect.proxy;import Java.util.calendar;import Java.util.GregorianCalendar; Public classProxytest { Public Static voidMain (string[] args) {Invocationhandler handler=NULL;//Invoke proxyAbstractuserdao Userdao =NewUserdao ();//DAOHandler =NewDaologhandler (Userdao); Abstractuserdao Proxy=NULL; //dynamically create proxy objects to proxy a real-world subject object of type AbstarctuserdaoProxy = (Abstractuserdao) proxy.newproxyinstance (Abstractuserdao.class. getClassLoader (),NewClass[]{abstractuserdao.class}, handler); Proxy.finduserbyid ("Zhang Mowgli"); System. out. println ("------------------------"); Abstractdocumentdao Docdao=NewDocumentdao (); Handler=NewDaologhandler (Docdao); Abstractdocumentdao proxy_new=NULL; //dynamically create proxy objects to proxy a real-world subject object of type AbstractdocumentdaoProxy_new = (Abstractdocumentdao) proxy.newproxyinstance (Abstractdocumentdao.class. getClassLoader (),NewClass[]{abstractdocumentdao.class}, handler); Proxy_new.deletedocumentbyid ("D001");//calling the business method of the proxy object }}Interfaceabstractuserdao{ PublicBoolean Finduserbyid (String userId);}Interfaceabstractdocumentdao{ PublicBoolean Deletedocumentbyid (String documentid);}classUserdao implements abstractuserdao{@Override PublicBoolean Finduserbyid (String userId) {if(Userid.equalsignorecase ("Zhang Mowgli") ) {System. out. println ("the query ID is"+userid+"The information is successful"); return true; }Else{System. out. println ("the query ID is"+userid+"The information failed"); return false; } }}classDocumentdao implements abstractdocumentdao{@Override PublicBoolean Deletedocumentbyid (String documentid) {if(Documentid.equalsignorecase ("D001") ) {System. out. println ("Remove the ID"+documentid+"the document succeeds"); return true; }Else{System. out. println ("the query ID is"+documentid+"the document failed"); return false; } }}//Custom Request-processing classes for implementing proxiesclassDaologhandler implements invocationhandler{PrivateCalendar Calendar; PrivateObjectObject; //parametric and non-parametric construction PublicDaologhandler () {} PublicDaologhandler (ObjectObject){ This.Object=Object; } @Override Publicobject Invoke (Object proxy, Method method, object[] args) throws Throwable {Beforeinvoke (); Object result= Method.invoke (Object, args); Afterinvoke (); returnresult; } //after the call Private voidAfterinvoke () {Calendar=NewGregorianCalendar (); inthour = Calendar.Get(Calendar.hour_of_day); intminute = Calendar.Get(Calendar.minute); intSecond = Calendar.Get(Calendar.second); intMillsecond = Calendar.Get(Calendar.millisecond); String Time= Hour +":"+minute +":"+second +":"+Millsecond; System. out. println ("Call End Time"+Time ); } //before the call Public voidBeforeinvoke () {Calendar=NewGregorianCalendar (); inthour = Calendar.Get(Calendar.hour_of_day); intminute = Calendar.Get(Calendar.minute); intSecond = Calendar.Get(Calendar.second); intMillsecond = Calendar.Get(Calendar.millisecond); String Time= Hour +":"+minute +":"+second+":"+Millsecond; System. out. println ("Call Start Time"+Time ); } }-----------------------------------code Execution Result: Call start time: -:2:902Query ID for the message of Mowgli successful call end time: -:2:903------------------------Call start time: -:2:904Delete document with ID D001 successful call end time: -:2:905
How to implement Java Proxy mode