SpringAop学习02:基础知识
一.概念
面向切面编程,可以对业务逻辑的的各个部分进行隔离,从而使业务逻辑各个部分之间的耦合度降低,提高了程序的可重用性,同时提高了kai开发效率。
二、用途
日志记录、性能统计、安全控制、权限管理、事务处理、异常处理、资源池管理
三、基础知识讲解
1.切面(Aspect)
官方的chou抽象定义为"一个关注点的模块化,这个关注点可能会横切多个dui'对象“。切面就是类(TestAspect)所关注的具体行为。
2.连接点(JoinPoint)
程序zhi执行过程中的某一行为.这是应用程序中使用Spring AOP框架采取操作的实际位置。被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器.execution表达式中的方法以及参数。
3.通知(Advice)
这是在方法执行之前或之后采取的实际操作。 这是在Spring AOP框架的程序执行期间调用的实际代码片段。
A 前置通知(Before advice) :在某连接点(JoinPoint)之前执行的通知,但这个通知不能阻止连接点前的执行。
B 后通知(After advice) :当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。
C 返回后通知(After return advice) :在某连接点正常完成后执行的通知,不包括抛出异常的情况。
D 环绕通知(Around advice) :包围一个连接点的通知,类似Web中Servlet规范中的Filter的doFilter方法。可以在方法的调用前后完成自定义的行为,也可以选择不执行。
E 抛出异常后通知(After throwing advice) : 在方法抛出异常退出时执行的通知。
通知执行顺序:前置通知→环绕通知连接点之前→连接点执行→环绕通知连接点之后→返回通知→后通知
→(如果发生异常)异常通知→后通知
4.切入点(Pointcut)
对连接点进行拦截的定义
1)切入点表达式
execution:用于匹配方法执行的连接点;
within:用于匹配指定类型内的方法执行;
this:用于匹配当前Aop代理对象类型的执行方法;注意是Aop代理对象的类型匹配,这样就可能包括引入接口也类型匹配;注意this中使用的表达式必须是完整类名,不支持通配符;
target:用于匹配当前目标对象类型的执行方法;注意是目标对象的类型匹配,这样就不包括引入接口也类型匹配;注意target中使用的表达式必须是完整类名,不支持通配符;
args:用于匹配当前执行的方法传入参数为指定类型的zhi'执行方法;参数类型列表中的参数必须是完整类名,通配符不支持;args属于动态切入点,这种切入点开销非常大,非特殊qing情况下最好不要使用。
@within:用于匹配持有指定注解类型内的方法;注解类型也必须是完整类名。
@target:用于匹配当前目标对象类型的执行方法,其中目标对象持有指定的注解,注解类型也必须是完整类名。
@args:用于匹配当前执行的方法传入的参数持有指定注解的执行;注解类型也必须是完整类名。
@annotation:用于匹配当前执行方法持有指定注解的方法;注解类型也必须是完整类名;
bean:Spring AOP扩展的,AspectJ没有对于指示符,用于匹配特定名称的Bean对象的执行方法;
reference pointcut:表示引用其他命名切入点,只有注解风格支持,XML风格不支持。
2)匹配语法
* 匹配任何数量字符;
.. 匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数。
+ 匹配指定类型的子类型;仅能作为后缀放在类型模式后边。
阅读更多
- Spring AOP基础知识学习——XML配置
- JavaEE进阶知识学习-----SpringBoot基础知识-3-控制类知识
- Spring AOP基础知识
- spring学习总结(九):AOP 基础及基于注解配置的AOP
- CgLib动态代理学习【Spring AOP基础之一】
- spring 学习(1.3) 入门基础- AOP 实例
- Spring基础学习(四)—AOP
- Objective_C 基础知识学习笔记02
- java基础知识学习之代理深入学习(用动态代理实现AOP,FacotryBean)
- 学习Spring必学的Java基础知识(1)----反射
- 学习Spring必学的Java基础知识(6)----ThreadLocal
- Spring学习笔记1——基础知识
- Spring学习笔记-spring基础知识概述
- Js_基础知识学习_02
- Spring学习笔记1——基础知识
- 【spring】【转】Spring学习笔记1——基础知识
- 学习Spring必学的Java基础知识(2)----动态代理
- 学习Spring必学的Java基础知识(1)----反射
- Spring学习基础知识
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制