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