[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 "); } }