AOP思想

作者: 过去与未来 | 来源:发表于2015-11-04 13:41 被阅读0次

    AOP允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。应用只实现业务逻辑即可,并不负责其它的系统级关注点。

    AOP的应用场景

    日志记录、跟踪、监控与优化,性能统计、优化、安全、权限控制,应用系统的异常捕捉及处理,事务处理,缓存,持久化,懒加载,内容传递,调试,资源池,同步。


    AOP种类

    静态AOP

    • Aspect形式,通过特定的编辑器,将实现后的Aspect编译并织入到系统的静态类中。

    动态AOP

    • AOP的织入过程在系统运行开始之后进行,而不是预先编译到系统中。

    AOP的实现方法

    静态:利用代理实现AOP功能

    • 代理工厂实现InvocationHandler接口

    • 新建学生代理方法返回Proxy.newProxyInstance方法 (入参为 目标对象的类加载器, 目标对象的实现接口, 代理类本身)

    • 重写invoke方法

    • 包装目标对象并返回对应的代理类对象

    调用

    利用接口实例化目标对象
    实例化代理工厂
    新建学生代理 方法入参为目标对象

    在invoke方法中可以在method.invoke中织入对应的逻辑实现AOP

    动态:利用CGLib实现AOP功能

    CGLib代理工厂中实现MethodInterception接口

    • 在创建对象方法当中引入enhancer
    • 设置enhancer的父级class为目标对象
    • 设置回调 入参为当前对象
    • 返回enhancer.create
    • 重写intercept方法
    • 实例化object对象

    在intercept方法中织入对应的逻辑实现AOP

    调用

    通过强转直接实例化CGLib代理工厂中创建的对象


    直接利用aspect注解
    在conf-aspect.xml配置注解对象

    相关文章

      网友评论

          本文标题:AOP思想

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