[toc]
| 单词 | 词性 | 音标 | 含义 |
|---|---|---|---|
| PointCut | n. | /pɔɪnt kʌt/ | 切点(AOP中定义哪些JoinPoint会被拦截的条件,用于精确指定需要增强的方法或位置) |
| Around | prep. / adj. | /əˈraʊnd/ | 环绕(AOP中的环绕通知,用@Around注解标识,可在目标方法执行前后自定义增强逻辑,且能控制目标方法是否执行) |
Lecture14-切面-[实验03]重用切入点表达式
1、声明
在一处声明切入点表达式之后,其他有需要的地方引用这个切入点表达式。易于维护,一处修改,处处生效。声明方式如下:
// 切入点表达式重用
@Pointcut("execution(public int com.atguigu.aop.api.Calculator.add(int,int)))")
public void declarPointCut() {}
2、同一个类内部引用
@Before(value = "declarPointCut()")
public void printLogBeforeCoreOperation(JoinPoint joinPoint) {
3、在不同类中引用
@Around(value = "com.atguigu.spring.aop.aspect.LogAspect.declarPointCut()")
public Object roundAdvice(ProceedingJoinPoint joinPoint) {
4、集中管理
而作为存放切入点表达式的类,可以把整个项目中所有切入点表达式全部集中过来,便于统一管理:
@Component
public class AtguiguPointCut {
@Pointcut(value = "execution(public int *..Calculator.sub(int,int))")
public void atguiguGlobalPointCut(){}
@Pointcut(value = "execution(public int *..Calculator.add(int,int))")
public void atguiguSecondPointCut(){}
@Pointcut(value = "execution(* *..*Service.*(..))")
public void transactionPointCut(){}
}