AOP:基于xml配置

AOP 相关术语

Joinpoint( 连接点):
	所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,
	因为 spring 只支持方法类型的		连接点。
	
Pointcut( 切入点):
	所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。
	
Advice( 通知/ 增强):
	所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。
	通知的类型:前置通知,后置通知,异常通知,最终通知,环绕通知。
	
Introduction( 引介):
	引介是一种特殊的通知在不修改类代码的前提下, Introduction 可以在运行期为类动态地添加一些方
	法或 Field。

Target( 目标对象):
	代理的目标对象。

Weaving( 织入):
	是指把增强应用到目标对象来创建新的代理对象的过程。
	spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。

Proxy (代理):
	一个类被 AOP 织入增强后,就产生一个结果代理类。

Aspect( 切面):
	是切入点和通知(引介)的结合。

切入点表达式(execution):匹配方法的执行(常用)

表达式语法:execution([修饰符] 返回值类型 包名.类名.方法名(参数))
写法说明:
全匹配方式:
	public  void	com.itheima.service.impl.AccountServiceImpl.saveAccount(com.itheima.domain.Account)
访问修饰符可以省略 
	void com.itheima.service.impl.AccountServiceImpl.saveAccount(com.itheima.domain.Account)
返回值可以使用*号,表示任意返回值
	* com.itheima.service.impl.AccountServiceImpl.saveAccount(com.itheima.domain.Account)
包名可以使用*号,表示任意包,但是有几级包,需要写几个*
	* *.*.*.*.AccountServiceImpl.saveAccount(com.itheima.domain.Account)
使用..来表示当前包,及其子包
	* com..AccountServiceImpl.saveAccount(com.itheima.domain.Account)
类名可以使用*号,表示任意类
	* com..*.saveAccount(com.itheima.domain.Account)
方法名可以使用*号,表示任意方法
	* com..*.*( com.itheima.domain.Account)
参数列表可以使用*,表示参数可以是任意数据类型,但是必须有参数
	* com..*.*(*)
参数列表可以使用..表示有无参数均可,有参数可以是任意类型
	* com..*.*(..)
全通配方式:
	* *..*.*(..)
注:
通常情况下,我们都是对业务层的方法进行增强,所以切入点表达式都是切到业务层实现类。
	execution(* com.itheima.service.impl.*.*(..))

配置Spring中的IOC

  • (前置通知,后置通知,异常通知,最终通知) 与 环绕通知 只能使用一个

1、使用前置通知,后置通知,异常通知,最终通知

在这里插入图片描述

2、使用环绕通知

1、配置XML

在这里插入图片描述

2、aroundPringLog

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章