• java动态代理cglib详细说明


    CGLib,即code generation library,原理是通过动态生成类以实现代理的功能。AOP(面向切片编程)以及AOP的一种实现方法——Java Dynamic Proxy。需要注意的是,Java动态代理是面向接口的,即被代理的类必须实现某个接口,代理类以该接口的形式出现,而使用CGLib,则没有这方面的限制,任意一个类都是可以的。 简单的说,使用CGLib代理某个类,需要在Enhancer对象中设置好基类(也就是被代理类),以及一系列回调函数Callback。Callback是一个接口,CGLib提供了6个它的子接口: Callback子接口 用途(有待确认) Dispatcher 分发给其他Callback FixedValue 仅仅返回被代理类方法的返回值,对于限定某一些特定方法很有用(因为返回值必须和被代理类方法的返回值类型相匹配) InvocationHandler 主要用于Proxy(替代Java动态代理),也可以用户Enhancer LazyLoader 与Dispatcher类似,当代理类的第一个lazily-load方法调用时才会被调用 MethodInterceptor 普通用途的回调方法,在处理逻辑(advice)前后进行处理 NoOp 直接调用基类(被代理类)的方法调用 好,那我们来假设一个场景吧。 有这样一个类RealObject,它可以查询、保存资源,比如是这样:

    1  public class RealObject { 
    2 public void queryA () { System.out.println(“queryA”); } 
    3 public void queryB () { System.out.println(“queryB”); } 
    4 public void saveA () { System.out.println(“saveA”); } 
    5 public void saveB () { System.out.println(“saveB”); } 
    6 } […]
  • 相关阅读:
    mysql 创建++删除 数据表
    mac 配置apache
    mac 安装mysql
    mysql 创建++删除 数据库
    配置默认编码为utf8
    mysql 添加用户
    mysql 查看库结构---查看表结构
    centos7
    centOS 7 安装mysql
    修改字符集
  • 原文地址:https://www.cnblogs.com/xuzhenmin/p/3295955.html
Copyright © 2020-2023  润新知