1.先引入aop的依赖
<!-- 引入aop的依赖https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.在配置文件中编写aop配置
#配置Aop
aop:
auto: true
proxy-target-class: true
3.创建切面配置类,其中可以自己声明切入点和切入的五种方法
/**
* 创建切面配置类
* @Aspect声明这个类是一个切面类
* @Component表示交由IOC管理
*/
@Aspect
@Component
public class AspectConfig {
//声明切面点(具体是对哪个类的哪个方法进行切入)
public static final String CLICKINCREASE = "execution(* com.quanzhan.controller.TCartController.clickIncrease(..))";
public static final String CLICKDECREASE = "execution(* com.quanzhan.controller.TCartController.clickDecrease(..))";
/**
* 声明该方法执行之前执行,前置通知
* 直接导入切面点,上面的
*/
@Before(CLICKINCREASE)
public void before(){}
/**
* 后置通知:在目标方法执行后(无论是否发生异常),执行通知
* 在后置通知中还不能访问目标方法的执行的结果,不是在执行方法后调用的
*/
@After(CLICKINCREASE)
public void after(){}
/**
* 带有返回值的切面
* 在方法法正常结束受执行的代码
* 返回通知是可以访问到方法的返回值的!
* 可以使用returning = "result"进行获取后得到
*/
@AfterReturning(CLICKDECREASE)
public void afterReturning() {}
/**
* 异常处理切面
* 在目标方法出现异常时会执行的代码.
* 可以访问到异常对象; 且可以指定在出现特定异常时在执行通知代码
*/
@AfterThrowing(CLICKDECREASE)
public void afterThrowing() {}
/**
* 环绕切面,一般用的不是很多,类似于动态代理,可以包含前面4种的任意个
* 环绕通知需要携带 ProceedingJoinPoint 类型的参数.
* 环绕通知类似于动态代理的全过程: ProceedingJoinPoint 类型的参数可以决定是否执行目标方法.
* 且环绕通知必须有返回值, 返回值即为目标方法的返回值
*/
@Around(CLICKDECREASE)
public void aroundMethod(){}
}
4.大功告成!