zoukankan      html  css  js  c++  java
  • 04-cglib(code generator library)代理(没有接口)

    1 UserServiceProxyFactory4代码

    package www.test.c_proxy;
    
    import java.lang.reflect.Method;
    
    import org.springframework.cglib.proxy.Enhancer;
    import org.springframework.cglib.proxy.MethodInterceptor;
    import org.springframework.cglib.proxy.MethodProxy;
    
    import www.test.service.UserService;
    import www.test.service.UserServiceImpl;
    
    public class UserServiceProxyFactory4 implements MethodInterceptor {
    
        public UserService getUserServiceProxy(){
            Enhancer en = new Enhancer(); //帮我们生成代码对象
            en.setSuperclass(UserServiceImpl.class); //设置对谁进行代理
            en.setCallback(this); //代理要做什么
            UserService us = (UserService) en.create(); //创建代理对象
            return us;
        }
        
        @Override
        public Object intercept(Object proxyObj, Method method, Object[] arg, MethodProxy methodProxy) throws Throwable {
            System.out.println("目标方法前面的操作");
            //执行原有方法
            Object invokeSuper = methodProxy.invokeSuper(proxyObj, arg);
            System.out.println("目标方法之后的操作");
            return invokeSuper;
        }
    
    }

    2 测试

    package www.test.c_proxy;
    
    import org.junit.Test;
    
    import www.test.service.UserService;
    import www.test.service.UserServiceImpl;
    
    public class Demo3 {
    
        @Test
        public void fun1(){
            UserServiceProxyFactory4 proxyFactory = new UserServiceProxyFactory4();
            UserService usProxy = proxyFactory.getUserServiceProxy();
            usProxy.find();
            
            //判断代理对象是否属于被代理对象类型
            //代理对象继承了被代理对象==>true
            System.out.println(usProxy instanceof UserServiceImpl);//true;
        }
    }
  • 相关阅读:
    python day 6 time 库
    python day 5 基本数据类型
    20191206《信息安全导论》第六周学习总结
    第十节 数据流重定向
    第九节 简单的文本处理
    第八节 命令执行顺序控制与管道
    第七节 文件系统操作与磁盘管理
    第六节 文件打包与解压缩
    第五节 环境变量与文件查找
    第四节 Linux目录文件及文件基本操作
  • 原文地址:https://www.cnblogs.com/jepson6669/p/8540813.html
Copyright © 2011-2022 走看看