spring_aop_基本概念

来源:互联网 发布:洗脑神曲排行榜 知乎 编辑:程序博客网 时间:2024/06/07 07:40

一.基本概念

1.aspect(切面):一个关注点的模块化,这个关注点会横切多个对象,在spring aop中通过注解@Aspect实现。(个人理解就是定义通知方法的类)

2.joinpoint(连接点):程序执行过程中,某一个特定的点,一个连接点代表一个方法被执行。通过声明一个org.aspectj.lang.JoinPoint类型的参数使通知(advice)获取主体部分连接点的信息(例如dao层中的save()被执行)

3.advice(通知):在切面的某个特定的连接点(joinpoint)上执行的动作。通知有前置,后置,环绕等多种类型

4.pointcut(切入点):匹配连接点的断言.通知和一个切入点表达式关联,Spring缺省使用AspectJ切入点语法。(个人理解就是连接点所执行的方法,或者该方法所在的类)

5.introduction(引入):

6.target object(目标对象):被一个或多个被通知的对象。(个人理解就是实际存在的业务类或接口)

7.aop proxy(aop代理):aop框架创建的对象,用来实现切面契约(aspect contract),spring aop针对接口使用jdk动态代理,正对类使用CGLIB代理。(个人理解就是业务类被加入通知之后的形式)

8.weaving(织入):把切面连接到其他的运用程序类型或者对象上,并创建一个被通知的对象。在运行时完成织入。(个人理解就是程序执行时包含通知的切面被关联到业务类上,产生被通知对象)

9.通知类型

before advice(前置通知):在连接点之前执行的通知,如果该通知抛出一个异常,会阻止连接点前的执行

after returning advice(返回后通知):在连接点正常完成执行的通知,没有返回一个异常,正常返回。

after throwing advice(抛出异常后通知):在方法抛出异常退出时执行的通知。

after(finally)  advice(后通知):在某个连接点退出的时候执行的通知(无论正常还是异常退出)。

around advice(环绕通知):包围着一个连接点的通知,可以在方法调用前后完成自定义的行为。

10.切入点表达式

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)  

modifiers-pattern:方法操作权限

ret-type-pattern:返回值

declaring-type-pattern:方法所在的包

name-pattern:方法名

parm-pattern:参数名

throws-pattern:异常

例如:

execution(java.lang.Integer com.asarja.aop.annotation.*.*(Mp3)) 

执行返回值是int类型,参数是Mp3类型的方法

execution(* com.asarja.aop.annotation.*.s*(Mp3))

执行以s开头的方法,参数是Mp3类型




原创粉丝点击