springbootAOP

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


AOP中将对代码的统一操作称为通知,下面是通知的类型

  • 以下是两种实现方式:
  1. 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);
    }
posted @ 2025-06-10 23:43  m1kasaz  阅读(12)  评论(0)    收藏  举报