本文主要是介绍AOP之执行前通知@Before,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Spring AOP之执行前通知@Before
此文章说一下执行前通知,即注解@Before。
作用
多用于日志记录、权限校验、初始化资源等。
触发时间
目标函数执行触发。
定义
public class AopBeforeAspect {@Before("execution(public * com.example.demo.service.impl.AccountServiceImpl.aopBeforeMsg(..))")public void beforeMsg(){System.out.println("触发Before通知");}
}
说明
execution用于指定监听范围。execution可以有很多写法,下面会介绍几种。
“execution(public * com.example.demo.service.impl.AccountServiceImpl.aopBeforeMsg(…))”
“execution(* com.example.demo.service.impl.AccountServiceImpl.aopBeforeMsg(…))”
以上两种写法都表明监听com.example.demo.service.impl.AccountServiceImpl类下的aopBeforeMsg函数。
“execution(public * com.example.demo.service.impl.AccountServiceImpl.*(…))”
以上表明监听AccountServiceImpl类下的所有函数。
“execution(public * com.example.demo.service.impl.AccountServiceImpl.get*(…))”
以上写法表明监听AccountServiceImpl类下所有get开头函数。
"execution(public * com.example.demo.service.impl.AccountServiceImpl.get*(…)) || || execution(* com.example.service.OrderService.get*(…)) "
以上写法表示监听AccountServiceImpl类与OrderService类中get开头的函数。
“execution(* com.example.service…*(…))”
以上写法表示监听service包下的所有函数。
注意点
- @Before只能监听public与protected修饰的函数,别private或者final修饰的无法触发
- @Before只能监听被Spring管理的实例。也就是说,假如是通过自己代码new的实例,无法触发
这篇关于AOP之执行前通知@Before的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!