Spring Framework
切面(Aspect):对跨越多个类的关注点的模块化。事务管理就是企业 Java 应用中横切关注点的一个很好的例子。在 Spring AOP 中,切面通过普通类(基于 Schema 的方法)或使用 @Aspect 注解标记的普通类(@AspectJ 风格)来实现。
连接点(Join point):程序执行期间的某个点,例如方法的执行或异常的处理。在 Spring AOP 中,连接点总是代表方法的执行。
通知(Advice):切面在特定连接点采取的行动。不同类型的通知包括“环绕通知”、“前置通知”和“后置通知”。(通知类型稍后讨论。)许多 AOP 框架,包括 Spring,将通知建模为拦截器,并在连接点周围维护一个拦截器链。
切点(Pointcut):匹配连接点的谓词。通知与切点表达式相关联,并在切点匹配到的任何连接点处运行(例如,执行某个特定名称的方法)。通过切点表达式匹配连接点的概念是 AOP 的核心,Spring 默认使用 AspectJ 的切点表达式语言。
引入(Introduction):代表某个类型声明额外的方法或字段。Spring AOP 允许你为任何被通知的对象引入新的接口(以及相应的实现)。例如,你可以使用引入来使一个 bean 实现 IsModified 接口,从而简化缓存。(在 AspectJ 社区中,引入被称为 inter-type declaration。)
目标对象(Target object):一个被一个或多个切面通知的对象。也称为“被通知对象”(advised object)。由于 Spring AOP 是通过运行时代理实现的,因此这个对象总是一个代理对象。
AOP 代理(AOP proxy):由 AOP 框架创建的对象,用于实现切面契约(通知方法执行等)。在 Spring Framework 中,AOP 代理是 JDK 动态代理或 CGLIB 代理。
织入(Weaving):将切面与应用程序的其他类型或对象连接起来,以创建被通知的对象。这可以在编译时(例如,使用 AspectJ 编译器)、加载时或运行时完成。Spring AOP 与其他纯 Java AOP 框架一样,在运行时执行织入。