切入点的表达式
** 在配置切入点的时候,需要定义表达式,重点的格式:execution(public *..*(..)),具体展开如下:
* 切入点表达式的格式如下:
> execution([修饰符] 返回值类型 包名.类名.方法名(参数))
* 修饰符可以省略不写,不是必须要出现的
* 返回值类型是不能省略不写的,跟根据你的方法来编写返回值。可以使用 * 代替
* 包名例如: com.jadan.demo1.BookDaoImpl
> 首先 com 是不能省略不写的,但是可以使用 * 代替
> 中间的包名可以使用 * 代替
> 如果想省略中间的包名可以使用 ..
* 类名也可以使用 * 号代替,也有类似的写法:*DaoImpl
* 方法也可以使用 * 号代替
* 参数如果是一个参数可以使用 * 号代替,如果想代表任意参数使用 ..
AOP的通知类型
1、前置通知
* 在目标类的方法执行之前执行
* 配置文件信息:<aop:after method="before" pointcut="execution(public * *..*.*Impl.*())" />
* 应用:可以对方法的参数来做校验
2、最终通知
* 在目标类的方法执行之后执行,如果程序出现了异常,最终通知也会执行
* 在配置文件中编写具体的配置:<aop:after method="" pointcut="" />
* 应用:例如释放资源
3、后置通知
* 方法正常执行后的通知
* 在配置文件中编写具体的配置:<aop:after-returning method="" pointcut="" />
* 应用:可以修改方法的返回值
4、异常抛出通知
* 在抛出异常后通知
* 在配置文件中编写具体的配置:<aop:after-throwing method="" pointcut="" />
* 应用:包装异常的信息
5、环绕通知
* 方法的执行前和后执行
* 在配置文件中编写具体的配置:<aop:around method="" pointcut="" />
* 需要注意的是:目标的方法默认不不执行,需要使用 ProceedingJoinPoint 让目标对象的方法执行