• 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
  • 相关阅读:
    angularJS DOM element() $compile()
    windows下python虚拟环境vitrualenv与virtualenvwrapper安装
    django安装 _ django-admin命令_启动服务器命令_创建应用
    Windows下安装phpRedis扩展
    php获取api接口数据的方法
    PHP生成xml数据-XML方式封装接口数据方法
    PHP封装通信接口数据方法-生成json与通信数据标准格式
    PHP之Memcache缓存详解
    jQuery的$.getJSON方法在IE浏览器下失效的解决方案
    好用的日期插件(只需引用即可)
  • 原文地址:https://www.cnblogs.com/bravolove/p/8185756.html
Copyright © 2020-2023  润新知