AOP之执行前通知@Before

71 阅读1分钟

Spring AOP之执行前通知@Before

此文章记录执行前通知,即注解@Before。

作用

多用于日志记录、权限校验、初始化资源等。

触发时间

目标函数执行触发。

定义

@Aspect
@Component
public class AopBeforeAspect {
    @Before("execution(public * com.example.demo.service.impl.AccountServiceImpl.aopBeforeMsg(..))")
    public void beforeMsg(){
        System.out.println("触发Before通知");
    }
}

说明

execution用于指定监听范围。execution可以有很多写法,记录下面几种。

监听具体函数

以下两种写法都表明监听com.example.demo.service.impl.AccountServiceImpl类下的aopBeforeMsg函数。

execution(public * com.example.demo.service.impl.AccountServiceImpl.aopBeforeMsg(…))”
“execution(* com.example.demo.service.impl.AccountServiceImpl.aopBeforeMsg(…))”
监听类下所有函数
execution(public * com.example.demo.service.impl.AccountServiceImpl.*(…))”
监听类下所有get开头函数
execution(public * com.example.demo.service.impl.AccountServiceImpl.get*(…))”
监听多个类
"execution(public * com.example.demo.service.impl.AccountServiceImpl.get*(…)) || || execution(* com.example.service.OrderService.get*(…)) "
监听报下所有
execution(* com.example.service…*(…))”

注意点

  1. @Before只能监听public与protected修饰的函数,被private或者final修饰的无法触发
  2. @Before只能监听被Spring管理的实例。也就是说,假如是通过自己代码new的实例,无法触发