Spring的通知有哪几种类型?

如题所述

aop里有切点,切面,通知的概念
Term 术语 Definition 定义
Concern A particular issue
(关注特定问题) 感兴趣应用的特定问题、概念、范围。例如,事务管理、持久化、日志、安全等。
Crosscutting Concern
(横切关注点) 在关注点实现中贯穿了很多类,这在面向对象(OOP)中通常很难实现和维护。
Aspect(切面) 模块化的横切关注点,通过代码的聚合和隔离实现。
Join Point(连接点) 在程序或者类执行时的一个点。在Spring的AOP实现中,连接点总是一个方法调用。其他的例子包括访问字段(包括实例中字段的读写),变量和异常处理。
Advice(通知) 特定连接点所采取的动作。Spring有几种不同类型的通知,包括around、before、throws和after returning。在这几种类型的通知中,around是最强大的,在方法调用的前后都有执行一些操作的机会。之前用到的TraceInterceptor就是around类型的通知,它实现了AOP联盟的MethodInterceptor接口。通过实现下面的Spring接口可以使用其他类型的通知:
�0�1MethodBeforeAdvice
�0�1ThrowsAdvice
�0�1AfterReturningAdvicePointcut(切入点) 连接点的集合,这些连接点确认何时一个通知将会触发。切入点通常使用正则表达式或者是通配符语法。
Introduction
(引入) 添加字段或者方法到一个通知类。Spring允许你在任何通知对象上引入新的接口。例如,你可以使用引入以便让任意对象实现IsModified接口,来简化缓存。
Weaving(组织) 装配切面来创建一个被通知对象。可以在编译期间完成(像AspectJ做的那样)也可以在运行时完成。本章后面的组织策略部分详细讨论不同的组织策略(也就是实现AOP)。
Interceptor
(拦截器) 一种AOP实现策略,对与特点的连接点,可能存在一个拦截器链。
AOP Proxy(AOP代理) AOP框架创建的对象,包括通知。在Spring中,一个AOP代理可能是JDK动态代理或者是CGLIB代理。
Target Object
(目标对象) 包含连接点的对象。在使用拦截的框架中,它是在拦截器链末端的对象实例。也叫做被通知对象或者被代理对象。
切面。 用个比喻会更形象一些。可以把切面理解成一把菜刀,而其他方法就好像是黏糕,如果你要把所有的黏糕都在某个
位置切断,那么就用这个菜刀就行了。这个菜刀,就是我们需要的切面类。
例如execution(* com.xyz.someapp.service.*.*(..))
尾部(After),还是首尾(Around)等等。
这些“插入”的代码都是程序运行的时候动态插入的,所以看起来很神奇
有两种方式,一种是java本身提供了动态代理方式,这种方式基于接口;另一种是cglib这样的,动态修改java运行时的字节码
然后使用“通知”,确定切入的地点:是在头部(Before),
尾部(After),还是首尾(Around)
温馨提示:答案为网友推荐,仅供参考