美文网首页
cglib 动态代理

cglib 动态代理

作者: IT_IOS_MAN | 来源:发表于2021-01-06 15:01 被阅读0次
  • Factory class 文件

public class ProxyFactory {
  
    private Object target;

    public ProxyFactory(Object target) {
        super();
        this.target = target;
    }

    /**
    * 得到代理对象
    */
    public Object getProxyFactory() {
        // 创建一个子类构造器
        Enhancer enhancer = new Enhancer();
        // 设置父类
        enhancer.setSuperclass(obj.getClass());
        // 设置回调,就是代理工厂
        enhancer.setCallback(this);
        // 在内存里生成代理对象
        return enhancer.create();
    }

    /**
     * 拦截方法
     * @param obj 目标对象
     * @param method 目标对象调用的方法
     * @param args 方法参数 
     * @param methodProxy 方法代理
     */
    @Override
    public Object intercept(Object obj, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
        // 前置增强
        Object invoke = method.invoke(target, args);
        // 后置增强
        return invoke;
    }
}

  • mian 文件

public static void main(String[] args) {

    UserDaoImpl daoImpl = new UserDaoImpl();

    ProxyFactory proxyFactory = new ProxyFactory(daoImpl);

    UserDaoImpl daoImplFactory = (UserDaoImpl)proxyFactory.getProxyFactory();

    daoImplFactory.play();
        
}

相关文章

网友评论

      本文标题:cglib 动态代理

      本文链接:https://www.haomeiwen.com/subject/onwyoktx.html