讲解AOP相关概念

作者: 小小蒜头 | 来源:发表于2017-11-17 19:29 被阅读19次
    1.png
    • Crocss Cutting Concern(横切性的关注点)
      — 是一种独立服务。遍布在系统的各个角落里,或者是处理流程之中。

    • 通知(Advice)
      — 对横切性关注点的具体实现
      通知中分为5种类型:

    Before:
           在方法被调用之前调用
    After:
          在方法完成后调用通知,无论方法是否执行成功
    After-returning:
          在方法成功执行之后调用通知
    After-throwing:
          在方法抛出异常后调用通知
    Around:
          通知了好、包含了被通知的方法,在被通知的方法调用之前后调用之后执行自定义的行为
    
    • 连接点(JoinPoint)
      — 程序执行过程中明确的点,如方法的调用或特定的异常被抛出。
      只要记住,和方法有关的前前后后(抛出异常),都是连接点。

    • 切入点(Pointcut)
      — 定义了Advice应用到哪些JointPoint上,对Spring来说是方法的调用
      你的一个类里,有15个方法,那就有几十个连接点了对吧,但是你并不想在所有方法附近都使用通知(使用叫织入,以后再说),你只想让其中的几个,在调用这几个方法之前,之后或者抛出异常时干点什么,那么就用切点来定义这几个方法,让切点来筛选连接点,选中那几个你想要的方法。

    描述方式:

     1. 直接指定 Jointpoint 所在的方法名, 功能比较单一, 通常只支持方法级别的 AOP 框架
     2. 正则表达式
     3. 特定的描述语言, 如 AspectJ 提供的 Pointcut 描述语言
    
    • 切面(Aspect)
      — 对横切性关注点的模块化
      是切点和通知的结合。通知和切点共同定义了关于切面的全部内容,它是什么时候,在何时和何处完成功能

    • 引入(Introduction)
      — 可以动态的为类添加方法

    • 织入(Weaving)
      — 将Advice应用到Target Object上的过程叫织入,Spring支持的是动态织入
      这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。

    • 目标(Target Object)
      — 是Advice被应用的对象
      引入中所提到的目标类,也就是要被通知的对象,也就是真正的业务逻辑,他可以在毫不知情的情况下,被咱们织入切面。而自己专注于业务本身的逻辑。

    • Proxy
      — Spring AOP默认使用JDK的动态代理,它的代理是在运行时创建,也可以使用CGLIB代理

    AOP的应用场景

    • 日志(Logging):在应用程序中实现日志记录
    • Authentication(身份校验):使用身份验证之前的操作(如允许一些操作只有通过身份验证的用户)。
    • 数据校验(Validation or Notification):实施验证或通知属性setter(调用 propertychange事件当属性已经改变了类,实现INotifyPropertyChanged接口)。
    • 行为改变(Changing the behavior):改变一些方法的行为。

    相关文章

      网友评论

        本文标题:讲解AOP相关概念

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