zoukankan      html  css  js  c++  java
  • java--03--cglib代理

    1. 导入spring-core.jar

    2. 接口:

    //邓紫棋服务菜单 : 唱歌,跳舞
     interface IDengziqi {
    	void sing();
    	void dance();
    }
    

    3.目标对象, 不用实现接口

    //目标对象 , 邓紫棋实实在在的在唱歌和跳舞
    public class Dengziqi  {
    
        public void sing() {
            System.out.println("邓紫棋为你唱歌....");
        }
    
        public void dance() {
            System.out.println("邓紫棋为你跳艳舞....");
    
        }
    
    }
    View Code

    4. 代理对象也不用实现接口

    //代理对象  精济人
    public class DengziqiProxy implements MethodInterceptor{
        //邓紫棋来了.  维护目标对象
        private Object target;
        public DengziqiProxy(Object target){
            this.target = target;
        }
        
        //给目标对象创建代理对象
        public Object getDengziqiProxy(){ // 获得代理对象,也指向了接口.
            Enhancer enhancer = new Enhancer();// 工具类
            enhancer.setSuperclass(target.getClass()); //设置父类
            enhancer.setCallback(this); //设置回调函数
            return enhancer.create();//创建子类(代理对象)
        }
        
        @Override
        public Object intercept(Object obj, Method method, Object[] args,
                MethodProxy  methodProxy) throws Throwable {
            System.out.println("dengziqi is coming");
            Object result = method.invoke(target, args);
            System.out.println("so cool...");
            return result;
        }
        
    
    }
    View Code

    5. 测试

    // 测试类
    public class ProxyTests {
    
        public static void main(String[] args) {
            //1. 先目标对象
            Dengziqi dengziqi = new Dengziqi(); //邓紫棋找来了
            System.out.println(dengziqi.getClass()); // class com.vn.copy.DengziqiImpl
        
            //2. 代理对象 
            Dengziqi dengziqiProxy = (Dengziqi) new DengziqiProxy(dengziqi).getDengziqiProxy();
            System.out.println(dengziqiProxy.getClass()); // class com.vn.copy.DengziqiImpl$$EnhancerByCGLIB$$34a5605e
            dengziqiProxy.sing(); //审核条件达标者, 通过,让邓紫棋唱歌
            dengziqiProxy.dance();//审核条件达标者, 通过,让邓紫棋跳舞
            
            
            /*    dengziqi is coming
            邓紫棋为你唱歌....
            so cool...
            
            dengziqi is coming
            邓紫棋为你跳艳舞....
            so cool...*/
        }
    
    }
    View Code
  • 相关阅读:
    Eclipse MarketPlace 打不开,对话框闪退
    docker 创建容器的时候的坑
    win7 设置docker加速器
    postgres常用命令
    docker加速器配置
    docker 安装 postgresql
    Spring Cloud-服务的注册与发现之服务注册中心(Eureka Server)
    redis incr自增指定的无限期 key 删除问题
    redis读取自增时候指定的key问题
    docker 安装 redis
  • 原文地址:https://www.cnblogs.com/bravolove/p/8185756.html
Copyright © 2011-2022 走看看