springbootAOP
AOP简单的说就是,在你面临需要对多个方法进行相同的操作时,想你提供一种不改变源码却能实现功能的技术,既简化了代码,又保持源码的独立。
AOP中将对代码的统一操作称为通知,下面是通知的类型

- 以下是两种实现方式:
- execution
execution(访问修饰符? 返回值 包名.类名.?方法名(方法参数) throws 异常?)
//`*` :单个独立的任意符号,可以通配任意返回值、包名、类名、方法名、任意类型的一个参数,也可以通配包、类、方法名的一部分
//`..` :多个连续的任意符号,可以通配任意层级的包,或任意类型、任意个数的参数
//根据业务需要,可以使用 且(&&)、或(||)、非(!) 来组合比较复杂的切入点表达式。
2.@annotation
//自定义注解LogOperation
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogOperation{
}
//切面类
@Slf4j
@Component
@Aspect
public class MyAspect6 {
//针对list方法、delete方法进行前置通知和后置通知
//前置通知
@Before("@annotation(com.itheima.anno.LogOperation)")
public void before(){
log.info("MyAspect6 -> before ...");
}
//后置通知
@After("@annotation(com.itheima.anno.LogOperation)")
public void after(){
log.info("MyAspect6 -> after ...");
}
}
在想要进行切入的方法前添加注解即可,如
@Override
@LogOperation //自定义注解(表示:当前方法属于目标方法)
public void delete(Integer id) {
//1. 删除部门
deptMapper.delete(id);
}

浙公网安备 33010602011771号