当前位置:网站首页>相同切入点的抽取
相同切入点的抽取
2022-07-03 16:01:00 【不入开发不工作】
1.相同切入点的抽取
抽取前:
package com.spring.spring5.annotaion;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
//增强的类
@Aspect//表示生成代理对象
@Component
public class UserProxy {
//前置通知
@Before(value = "execution(* com.spring.spring5.annotaion.User.add(..))")//表示作为前置通知
public void before(){
System.out.println("Before......");
}
//最终通知,不管有没有异常在方法之后都执行
@After(value = "execution(* com.spring.spring5.annotaion.User.add(..))")
public void after(){
System.out.println("After......");
}
//后置通知(返回通知),方法无异常结束时执行
@AfterReturning(value = "execution(* com.spring.spring5.annotaion.User.add(..))")
public void afterReturning(){
System.out.println("AfterReturning......");
}
//异常通知,add()有异常时才会执行
@AfterThrowing(value = "execution(* com.spring.spring5.annotaion.User.add(..))")
public void afterThrowing(){
System.out.println("AfterThrowing......");
}
//环绕通知,在方法之前和之后执行
@Around("execution(* com.spring.spring5.annotaion.User.add(..))")
public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
System.out.println("Around之前......");
proceedingJoinPoint.proceed();
System.out.println("Around之后......");
}
}
抽取后:
package com.spring.spring5.annotaion;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
//增强的类
@Aspect//表示生成代理对象
@Component
public class UserProxy {
//相同切入点抽取
@Pointcut("execution(* com.spring.spring5.annotaion.User.add(..))")
public void pointdemo() {
}
//前置通知
@Before(value = "pointdemo()")//表示作为前置通知
public void before(){
System.out.println("Before......");
}
//最终通知,不管有没有异常在方法之后都执行
@After(value = "pointdemo()")
public void after(){
System.out.println("After......");
}
//后置通知(返回通知),方法无异常结束时执行
@AfterReturning(value = "pointdemo()")
public void afterReturning(){
System.out.println("AfterReturning......");
}
//异常通知,add()有异常时才会执行
@AfterThrowing(value = "pointdemo()")
public void afterThrowing(){
System.out.println("AfterThrowing......");
}
//环绕通知,在方法之前和之后执行
@Around("pointdemo()")
public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
System.out.println("Around之前......");
proceedingJoinPoint.proceed();
System.out.println("Around之后......");
}
}
两者效果一致
边栏推荐
- Seckill system 2 redis solves the problem of distributed session
- About text selection in web pages and counting the length of selected text
- [proteus simulation] 74hc595+74ls154 drive display 16x16 dot matrix
- 关于网页中的文本选择以及统计选中文本长度
- App移动端测试【4】apk的操纵
- Introduction series of software reverse cracking (1) - common configurations and function windows of xdbg32/64
- Nifi from introduction to practice (nanny level tutorial) - flow
- [combinatorics] combinatorial identities (sum of variable terms 3 combinatorial identities | sum of variable terms 4 combinatorial identities | binomial theorem + derivation to prove combinatorial ide
- Using optimistic lock and pessimistic lock in MySQL to realize distributed lock
- ASEMI整流桥UMB10F参数,UMB10F规格,UMB10F封装
猜你喜欢
Shell script import and export data
Redis在Windows以及Linux系统下的安装
App mobile terminal test [4] APK operation
Intelij idea efficient skills (III)
QT use qzxing to generate QR code
MongoDB 的安装和基本操作
SDNU_ ACM_ ICPC_ 2022_ Winter_ Practice_ 4th [individual]
工资3000,靠“视频剪辑”月入40000:会赚钱的人,从不靠拼命!
Mb10m-asemi rectifier bridge mb10m
[redis foundation] understand redis persistence mechanism together (rdb+aof graphic explanation)
随机推荐
WinDbg分析dump文件
How idea starts run dashboard
Mongodb installation and basic operation
The difference between mutually exclusive objects and critical areas
App移动端测试【5】文件的写入、读取
Rk3399 platform development series explanation (WiFi) 5.54. What is WiFi wireless LAN
Q2 encryption market investment and financing report in 2022: gamefi becomes an investment keyword
Microservice - Nacos registration center and configuration center
[combinatorics] combinatorial identities (recursive combinatorial identities | sum of variable terms | simple combinatorial identities and | sum of variable terms | staggered sums of combinatorial ide
nifi从入门到实战(保姆级教程)——flow
[redis foundation] understand redis master-slave architecture, sentinel mode and cluster together (Demo detailed explanation)
Function introduction of JMeter thread group
首发!!lancet饿了么官方文档
CString的GetBuffer和ReleaseBuffer使用说明
Microservices - load balancing ribbon
Persisting in output requires continuous learning
[proteus simulation] 74hc595+74ls154 drive display 16x16 dot matrix
MB10M-ASEMI整流桥MB10M
请求头不同国家和语言的表示
Second kill system 3 - list of items and item details