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;
        }
    }
  • 相关阅读:
    如何把一个用户加入sodu组
    linux bond配置步骤,七种bond模式说明
    python 面向对象(进阶篇)
    lnmp搭建的常见错误
    Linux运维人员如何学习python编程
    运维日常工作知识总结
    《JS原型》
    《读王福朋有感》
    《使用Win32DiskImager安装Ubuntu16.04》
    因为无耻的查重系统,我删除了四篇随笔
  • 原文地址:https://www.cnblogs.com/jepson6669/p/8540813.html
Copyright © 2011-2022 走看看