![]()
推荐:Spring AOP框架使用
[在Spring AspectJ LTW中分析如果在类加载期织入切面,本篇中学习如何在运行时动态的注入切面,这种方式在实际项目中使用比较多,在Spring AOP框架中提供了三种方式在程序
本文的目标:
从实现的角度来认识SpringAOP框架。
观察的角度:
从外部接口,内部实现,组成部分,执行过程四个方面来认识SpringAOP框架。
本文的风格:
首先列出AOP的基本概念;
其次介绍框架所涉及到的核心组件列表,组件之间的结构关系图;
然后细化中的部分;
接下来是一个简单的sample;
最后是后记部分。
注:
1.本文的源代码基于Spring2.x。Spring的源代码也处于演变中,但对基础代码的影响并不大。
2.本文是 对Spring IoC容器实现的结构分析的姊妹帖。
正文:
Spring AOP框架涉及的基本概念介绍:
关注点(concern):一个关注点可以是一个特定的问题、概念、或是应用程序的兴趣区间--总而言之,应用程序必须达到的一个目标。
核心关注点(core concern):业务功能模块,如:存款模块,取款模块,转账模块等,
横切关注点(crosscutting concern):非功能性的、横切性模块,如:安全性管理,事务管理,性能监控等。
方面(aspect):一个方面是对一个横切关注点的模块化,它将那些原本散落在各处的、用于实现这个关注点的代码归整到一处。
连接点(join point):程序执行过程中的一点,如:
字段访问:读、写实例变量;
方法调用:对方法(包括构造方法)的调用;
异常抛出:特定的异常被抛出。
切入点(pointcut):一组连接点的总称,用于指定某个增强应该在何时被调用。切入点常用正则表达式或别的通配符语法来描述,有些AOP实现技术还支持切入点的组合。
增强(advice):在特定连接点执行的动作。很多AOP框架都以(interceptor)的形式来表现增强--所谓是这样的一个
对象:当连接点被调用时,它会收到一个回调消息。基本的增强有:
前增强(BeforeAdvice):在连接点调用之前,首先调用增强;
后增强(AfterAdvice):在连接点调用之后,再调用增强,在AspectJ中,后增强又分为三种:
AfterReturningAdvice:在调用成功完成(没有异常抛出)之后。

AfterThrowingAdvice:在抛出某种特定类型(或其子类型)的异常之后。
AfterAdvice:在连接点的任何调用之后,不管调用是否抛出异常。
环绕增强(AroundAdvice):这类增强可以完全控制执行流程。除了完成本身的工作之外,它还需要负责主动调用连接点,促使真实的操作发生(proceed)-- 这通常是通过调用某个特定的方法来完成的。
引介(introduction):为一个现有的Java类或接口添加方法或字段。这种技术可以用于实现Java中的多继承,或者给现有对象模型附加新的API。
混入继承(mixin inheritance):一个“混入类”封装了一组功能,这组功能可以被"混入"到现有的类当中,并且无须使用传统的继承手段。在AOP这里,混入是通过引介来实现的。在Java语言中,可以通过混入来模拟多继承。
织入(weaving):将方面整合到完整的执行流程(或完整的类,此时被织入的便是引介中)。
(initerceptor):很多AOP框架用它来实现字段和方法的拦截(interception)。随之而来的就是在连接点(如方法拦截)处挂接一条链(interceptor chain),链条上的每个通常会调用下一个。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-59495-1.html
特流畅
给我一次机会我想刷回9
应该统一起来