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;
        }
    }
  • 相关阅读:
    taobao 爬虫基本思路分享
    浅谈python中字典append 到list 后值的改变问题
    滑动验证码验证
    selenium:css_selector定位详解
    01分数规划
    可持久化并查集(草稿)
    后缀自动机求endpos集大小
    伯努利数公式
    HDU 6619 Horse 斜率优化dp
    别人的回文自动机
  • 原文地址:https://www.cnblogs.com/jepson6669/p/8540813.html
Copyright © 2011-2022 走看看