zoukankan      html  css  js  c++  java
  • cglib动态代理

    public class TestCglibProxy {
    
        public static void main(String[] args) {
    
            UserService userService  = new UserServiceImpl();
    
            CglibProxy cglibProxy = new CglibProxy();
    
            Enhancer enhancer = new Enhancer();
            //设置父类,因为Cglib是针对指定的类生成一个子类,所以需要指定父类
            enhancer.setSuperclass(userService.getClass());
            enhancer.setCallback(cglibProxy);// 设置回调
            UserService userServiceImpl = (UserService)enhancer.create();//创建并返回代理对象
    
            userServiceImpl.save();
        }
    }
    
    
    class CglibProxy implements MethodInterceptor{
    
        @Override
        public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
            System.out.println("开始");
            Object result = methodProxy.invokeSuper(o, objects);
            System.out.println("结束");
            return result;
        }
    }
    
    interface UserService{
    
        void save();
    }
    
    class UserServiceImpl implements UserService{
    
        @Override
        public void save() {
            System.out.println("save method");
        }
    }
  • 相关阅读:
    Atlas
    MHA高可用
    Mycat 读写分离
    数据库 基于GTID主从复制
    DHCP服务
    python垃圾回收机制
    深拷贝、浅拷贝、引用(总结)
    python内存管理机制
    web安全-横向越权与纵向越权
    登录功能SQL注入
  • 原文地址:https://www.cnblogs.com/gavinYang/p/11202158.html
Copyright © 2011-2022 走看看