1 Spring的AOP注解配置
1.1 AOP注解前提
<!-- 开启AOP注解 -->
<aop:aspectj-autoproxy/>
1.2 AOP常用注解
1.2.1 @Aspect切面注解
1.2.2 @Before前置通知注解
- 前置通知注解,value为切点表达式
- @Before(value = “execution(* com.zgd.learn.spring.demo03.OrderDao.save(…))”)
1.2.3 @AfterReturing后置通知注解
- 后置通知注解,value为切点表达式,returning为返回值(非必须)
- 方法可以有参数:Object result
- @AfterReturning(value = “execution(* com.zgd.learn.spring.demo03.OrderDao.delete(…))”, returning = “result”)
1.2.4 @Around环绕通知注解
- 环绕通知注解,value为切点表达式
- 方法需要参数:ProceedingJoinPoint joinPoint
- joinPoint.proceed()的前后添加环绕代码
- @Around(value = “execution(* com.zgd.learn.spring.demo03.OrderDao.update(…))”)
1.2.5 @AfterThrowing异常通知注解
- 异常通知注解,value为切点表达式,throwing为异常对象(非必须)
- 方法可以有参数:Throwable e
- @AfterThrowing(value = “execution(* com.zgd.learn.spring.demo03.OrderDao.find(…))”, throwing = “e”)
1.2.6 @Before前置通知注解
- 最终通知注解,value为切点表达式
- @After(value = “execution(* com.zgd.learn.spring.demo03.OrderDao.find(…))”)
1.2.7 @Pointcut切点注解
- 切点注解,不可以有参数,当不想在通知上写表达式可使用
- @Pointcut(value = “execution(* com.zgd.learn.spring.demo03.OrderDao.find(…))”)
@After(value = "AspactAnno.pointcut1()")
public void after()
{
System.out.println("=========最终通知=========");
}
@Pointcut(value = "execution(* com.zgd.learn.spring.demo03.OrderDao.find(..))")
public void pointcut1(){
}
1.3 AOP注解示例
1.3.1 开启注解配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http:/