AOP 术语
1、切面(Aspect)
是指应用系统模块化的一个切面或领域。 简单例子(日志管理)
2、连接点(Joinpoint)
连接点是应用程序执行过程中插入切面的地点。
3、通知(Advice)
通知切面的实际实现。他通知应用系统新的行为。 是横切性关注点的具体实现。
4、切入点(Pointcut)
切入点定义了通知应该应用在哪些连接点。通知可以应用到AOP框架支持的任何连接点。
也即把advice应用到那些目标对象中。
5、 引入(Introduction)
引入允许你为已存在类添加新方法和属性。
6、 代理(Proxy)
代理是将通知应用到目标对象后创建的对象。
代理分为静态和动态代理,静态的代理类是存在java类中的,动态代理是利用了jdk代理。
7、 织入(Weaving)
织入是将切面应用到目标对象从而创建一个新的代理对象的过程。
织入可以在目标对象处于编译期、类装载期、运行期。
Spring 有二种代理创建方式。
如果一个目标对象实现了一个或多个接口,Spring将使用JDK 代理。
如果目标对象没实现任何接口,Spring 使用CGLIB库生成目标对象的子类。
使用CGLIB 需要注意以下二点:
1 对接口创建代理优于对类创建代理,松耦合
2 对final的类不能被通知。
Spring 通知的类型
Around org.aopalliance.intercept.MethodInterceptor 拦截对目标对象方法调用
Before org.springframework.aop.BeforeAdvice 在目标方法被调用之前调用
After org.springframework.aop.AfterReturningAdvice 在目标方法被调用之后
Throws org.springframework.aop.ThrowsAdvice 当目标方法抛出异常时调用