美文网首页
Spring Aop

Spring Aop

作者: EnchantF | 来源:发表于2019-07-26 10:35 被阅读0次

    官方文档

    了解AOP之前,建议先学习代理设计模式

    什么是AOP

    AOP(Aspect Oriented Programming):面向切面编程,是一种思想
    OOP:代码逻辑是自上而下的,而在这些过程中,难免会产生一些横切性的问题(次要性业务),从而AOP就应运而生了。
    AOP的编程思想是把业务逻辑与横切问题进行分离,从而达到 解耦的目的,提高代码的重用性及开发效率

    AOP术语

    连接点(Join point):其实就是目标对象中的方法method
    切点(Pointcut):许多连接点的集合,即方法的集合
    切面(Aspect):切点、通知等的载体,也可以理解为一个类
    目标对象(Target object)
    代理对象(AOP proxy)
    织入(Weaving):把代理逻辑织入到目标对象的过程
    通知(Advice):什么时候通知,通知到哪里
    通知类型:
    Before
    After
    AfterThrowing
    After (Finally)
    Around Advice:
    ProceedingJoinPoint和JoinPoint的区别
    ProceedingJoinPoint继承了JoinPoint,proceed()是aop代理链执行的方法
    JoinPoint的方法:
    1.getArgs()------获取连接点(方法)参数
    2.getThis()------获取代理对象
    3.getTarget()------获取目标对象
    4.getSignature()------获取连接点的方法签名对象
    proceed()可以修改目标方法的参数

    静态代理

    静态代理UML

    SpringAop的底层技术

    • JDK动态代理(默认)
    • CGLIB代理

    编译时织入还是运行时织入?两者都是运行时织入
    初始化时织入还是获取对象时织入?通过源码分析,在初始化时织入

    AspectJ静态织入 动态织入

    推荐阅读

    JDK动态代理与CGLIB动态代理代码讲解

    AOP的应用场景

    • 性能检测
    • 日志记录
    • 权限验证
    • 效率检查
    • 事务管理
    • Mysql读写分离

    相关文章

      网友评论

          本文标题:Spring Aop

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