码迷,mamicode.com
首页 > 编程语言 > 详细

java--03--cglib代理

时间:2018-01-03 22:44:10      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:static   技术分享   glib   test   bsp   class   回调函数   img   $$   

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

 

java--03--cglib代理

标签:static   技术分享   glib   test   bsp   class   回调函数   img   $$   

原文地址:https://www.cnblogs.com/bravolove/p/8185756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!