• proxy in java


    [Static]

     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]

     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]

    // 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 ");
        }
    
    }
  • 相关阅读:
    面试生信工程师2
    R语言矩阵相关性计算及其可视化?
    PCA方差解释比例求解与绘图?
    MySQL 练习
    oracle高级数据查询技术
    Oracle安全管理
    基本查询语句
    管理表
    oracle PL/SQL高级编程
    oracle视图与索引
  • 原文地址:https://www.cnblogs.com/rojas/p/8558203.html
Copyright © 2020-2023  润新知