zoukankan      html  css  js  c++  java
  • AOP 基本术语及其在 Spring 中的实现

    无论是 Spring 还是其他支持 AOP(Aspect Oriented Programming)的框架,尤其是 Spring 这种基于 Java(彻底的面向对象)的语言,在实现 AOP 时,首先为 AOP 这一编程思想,定义一些基本概念,基本术语,基本流程。

    1. AOP 术语

    • Advice:通知。用于修饰某个方法(代表业务),切面是独立于业务的的。AOP 就是尽可能降低目标方法和切面的耦合关系。

      • 切面的目标 —— 必须要完成的工作。切面的工作就被称为通知;
      • 通知定义了什么是切面(what),也即切面的工作(职责所在),还描述了何时(when)执行这个工作,

        时序上,Spring 切面支持如下 5 种类型的通知:

        • 前置(型)通知(Before),在目标方法被调用之前调用通知功能;
        • 后置(型)通知(After),在目标方法完成之后(不保证成功还是抛异常)调用通知,此时不会关心方法的输出是什么?
        • 返回(型)通知(After-returning),在目标方法成功执行之后调用通知;
        • 异常(型)通知(After-throwing),在目标方法抛出异常之后调用通知;
        • 环绕(型)通知(Around),通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为;
    • 连接点(Join point):连接点是在应用执行过程中,能够插入切面的一个点。
      • 这个点可以是在调用方法时,抛出异常时,甚至修改一个字段时;
      • 切面代码可以利用这些点插入到应用的正常流程中,并添加新的行为;
    • Pointcut(切点),通知定义了切面的“什么”(what)和“何时”(when)的话,那么切点就定义了位置(where,何处)
      • 切点(切入点),其定义会去匹配所要织入(weaving)的一个或多个连接点,
    • 切面(Aspect):通知和切点共同定义了切面的全部内容;
      • 它是什么,在何时何处完成其功能;

    2. Spring 对 AOP 的支持

    并非所有的 AOP 框架都是相同的,它们在连接点模型(Join Point Model)上可能有强弱(程度)之分。有些允许在字段修饰符级别应用通知,而另一些只支持与方法调用相关的连接点。它们被织入(weaving)切面的方式和时机(timing)也有所不同。但是无论如何不同和变化,在实现方式上,创建切点(poincut)来定义切面所织入的连接点是 AOP 框架的基本功能。

  • 相关阅读:
    CentOS6.5 升级 Python 2.7 版本
    mysql 主从实施步骤
    innodb_log_buffer_size和innodb_buffer_pool_size参数说明
    mysql innodb_log_buffer_size和 innodb_buffer_pool_size设置
    8.2.1.8 IS NULL Optimization IS NULL 优化 (索引不存储NULL值)
    8.2.1.7 Use of Index Extensions 索引扩展使用
    8.2.1.5 Engine Condition Pushdown Optimization 引擎优化条件推入
    报表引擎API开发入门—简单程序数据集
    8.2.1.4 Index Merge Optimization
    8.2.1.3 Range Optimization 范围优化
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421172.html
Copyright © 2011-2022 走看看