proxy in java

[Static]java

 1  IFeature.java  2  ImpicateF.java  3  Runport.java  4  StaticProxy.java  5 
 6  IFeature.java  7 package UProxy.staticMethod;  8 public interface IFeature {  9     public void AccessClouds(String who); 10 } 11 
12  ImpicateF.java 13 package UProxy.staticMethod; 14 public class ImpicateF implements IFeature { 15 
16  @Override 17     public void AccessClouds(String who) { 18         System.out.println(who+" is Accessing Clouds."); 19  } 20 } 21 
22 Runport.java 23 package UProxy.staticMethod; 24 public class Runport { 25 
26     public static void main(String[] args) { 27         String who="Tomas"; 28         IFeature i=new ImpicateF(); 29         
30         StaticProxy sp=new StaticProxy(i); 31  sp.AccessClouds(who); 32  } 33 
34 } 35 
36 
37 StaticProxy.java 38 package UProxy.staticMethod; 39 public class StaticProxy implements IFeature{ 40 
41     public IFeature target; 42     
43     public StaticProxy(IFeature target){ 44         this.target=target; 45  } 46     
47  @Override 48     public void AccessClouds(String who) { 49         
50         System.out.println(who+" pre access clouds."); 51  target.AccessClouds(who); 52         System.out.println(who+" aft access clouds."); 53  } 54 
55 }

 

[Dynamic]spring

 IFeature.java ImpicateF.java ProxyFactory.java Rundyport.java IFeature.java package UProxy.dyMethod; public interface IFeature { public void AccessClouds(String who); } ImpicateF.java package UProxy.dyMethod; public class ImpicateF implements IFeature { @Override public void AccessClouds(String who) { System.out.println(who+" is Accessing Clouds."); } } ProxyFactory.java package UProxy.dyMethod; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class ProxyFactory { public Object target; public ProxyFactory(Object target){ this.target=target; } public Object getProxyInstance(){ return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler(){ @Override public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable { System.out.println("transaction begin."); Object returnValue = arg1.invoke(target, arg2); System.out.println("transaction end."); return returnValue; }}); } } Rundyport.java package UProxy.dyMethod; public class Rundyport { public static void main(String[] args) { IFeature ifs= new ImpicateF(); IFeature pf=(IFeature)new ProxyFactory(ifs).getProxyInstance(); pf.AccessClouds("QUEEBKE"); } }

 

[CG]ide

// add spring-core-xxx.jar
 ImpicateF.java ProxyFactory.java Runcgport.java ImpicateF.java package UProxy.cglibMethod; public class ImpicateF { public void AccessClouds(String who) { System.out.println(who+" is Accessing Clouds."); } } ProxyFactory.java package UProxy.cglibMethod; import java.lang.reflect.Method; import org.springframework.cglib.proxy.Enhancer; import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy; public class ProxyFactory implements MethodInterceptor { Object target; public ProxyFactory(Object target){ this.target=target; } public Object getInsataceProxy(){ Enhancer en=new Enhancer(); en.setSuperclass(target.getClass()); en.setCallback(this); return en.create(); } @Override public Object intercept(Object arg0, Method arg1, Object[] arg2, MethodProxy arg3) throws Throwable { System.out.println("transaction 01"); Object o=arg1.invoke(target, arg2); System.out.println("transaction 02"); return o; } } Runcgport.java package UProxy.cglibMethod; public class Runcgport { public static void main(String[] args) { ImpicateF imf= new ImpicateF(); ImpicateF imf1=(ImpicateF)new ProxyFactory(imf).getInsataceProxy(); imf1.AccessClouds("pizz "); } }
相關文章
相關標籤/搜索