aop 通知的执行顺序
private static final org.slf4j.Logger Logger = LoggerFactory.getLogger(LoggerAop.class); /**
* 线程池 异步记录日志
*/
private static ExecutorService logExecutorService = Executors.newCachedThreadPool(); // 拦截api接口下面的所有类所有方法
@Pointcut("execution(* com.l.gis.api..*(..))")
public void logcut() {
} /**
* @throws Throwable
*/
@Before(value = "logcut()")
public void before(JoinPoint joinPoint) throws Throwable {
String ip = HttpUtil.getIpAddress();
System.out.println("aop before 前置 :" + Thread.currentThread().getId() + " = " + Thread.currentThread().getName());
}
@AfterReturning(value = "logcut()")
public void afterReturning(JoinPoint joinPoint) throws Throwable {
System.out.println("aop afterReturning 返回 :" + Thread.currentThread().getId() + " = " + Thread.currentThread().getName());
} @AfterThrowing(value = "logcut()", throwing = "throwable")
public void afterThrowing(JoinPoint joinPoint , Throwable throwable) throws Throwable {
System.out.println("aop afterThrowing 异常 :" + Thread.currentThread().getId() + " = " + Thread.currentThread().getName());
}
@After(value = "logcut()")
public void after(JoinPoint joinPoint) throws Throwable {
System.out.println("aop after 最后 :" + Thread.currentThread().getId() + " = " + Thread.currentThread().getName());
}
@Around(value = "logcut()")
public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
System.out.println("aop around 环绕 :" + Thread.currentThread().getId() + " = " + Thread.currentThread().getName()); logExecutorService.execute(() -> {
try {
System.out.println("aop around 线程池 :" + Thread.currentThread().getId() + " = " + Thread.currentThread().getName());
} catch (Exception e) {
e.printStackTrace();
}
});
return proceedingJoinPoint.proceed();
}
执行顺序:
aop 通知的执行顺序的更多相关文章
- spring 基于XML的申明式AspectJ通知的执行顺序
spring 基于XML的申明式AspectJ通知的执行顺序 关于各种通知的执行顺序,结论:与配置文件中的申明顺序有关 1. XML文件配置说明 图片来源:<Java EE企业级应用开发教程&g ...
- Spring--AOP、通知的执行顺序
AOP执行顺序 如果我们在同一个方法自定义多个AOP,我们如何指定他们的执行顺序呢? 可以通过指定order,order越小越是最先执行. 配置AOP执行顺序的三种方式: 通过实现Ordered接口 ...
- 记录Spring Boot 2.3.4.RELEASE版注解方式实现AOP和通知的执行顺序
1.advice 按照以下的顺序执行 输出结果:(正常和异常) 说明:Spring boot 2.3.4.RELEASE 版本使用的AOP是spring-aop-5.2.9.RELEASE,AOP的通 ...
- Spring AOP之多切面运行顺序
多切面运行顺序 当一个方法的执行被多个切面共同切的时候,环绕通知只影响当前切面的通知顺序,例如创建两个切面logUtil,validateUtil两个切面共同监视计算器类的加法运算,add(int a ...
- 浅谈Spring AOP 面向切面编程 最通俗易懂的画图理解AOP、AOP通知执行顺序~
简介 我们都知道,Spring 框架作为后端主流框架之一,最有特点的三部分就是IOC控制反转.依赖注入.以及AOP切面.当然AOP作为一个Spring 的重要组成模块,当然IOC是不依赖于Spring ...
- 【spring-boot神器】第一篇:拦截器,过滤器,监听器,控制器,消息转换器,AOP执行顺序
整理一下这几天学习的资料和代码 第一部分.上代码 1.spring各种器的实现,idea搭建spring-boot的教程在这里http://www.jianshu.com/p/9082a533fa3c ...
- 【线上排查实战】AOP切面执行顺序你真的了解吗
前言 忙,是我这个月的主旋律,也是我频繁鸽文章的接口----蛮三刀把刀 公司这两个月启动了全新的项目,项目排期满满当当,不过该学习还是要学习.这不,给公司搭项目的时候,踩到了一个Spring AOP的 ...
- Spring Aop的执行顺序
Spring Aop的执行顺序 首先回忆一下 AOP 的常用注解 @Before:前置通知:目标方法之前执行 @After:后置通知:目标方法之后执行 @AfterReturning:返回后通知:执行 ...
- Spring系列26:Spring AOP 通知与顺序详解
本文内容 如何声明通知 如何传递参数到通知方法中 多种通知多个切面的通知顺序 多个切面通知的顺序源码分析与图解 声明通知 Spring中有5种通知,通过对应的注解来声明: @BeforeBefore ...
随机推荐
- restTemplate源码解析(二)restTemplate的核心逻辑
所有文章 https://www.cnblogs.com/lay2017/p/11740855.html 正文 上一篇文章中,我们构造了一个RestTemplate的Bean实例对象.本文将主要了解一 ...
- Mysql 更新时间
Mysql时间加减函数为date_add().date_sub() 定义和用法DATE_ADD() 函数向日期添加指定的时间间隔.DATE_SUB() 函数向日期减少指定的时间间隔.语法DATE_AD ...
- fastclick插件中存在的bug
1.在vue项目中安装fastclick插件 npm install --save fastclick 2.在main.js中引入并绑定到body import FastClick from 'fas ...
- Ubuntu安装telnet
安装 # sudo apt-get install xinetd telnetd 配置 -> 加入以下选项 # sudo vi /etc/inetd.conf telnet stream tcp ...
- sql server存储过程返回数据只有一个字符
SqlParameter[] param = { new SqlParameter("@shopId",shopId), new SqlParameter("@newSh ...
- post请求body格式
在PostMan中用Post方式,Body有form-data,x-www-form-urlencoded,raw,binary四种. 其中raw又分以下7种. 现在来区分一下: form-data是 ...
- HTML锚点的使用
锚点: 连接到的本页面的位置:
- 【Leetcode】【简单】【1. 两数之和】【JavaScript】
题目描述 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能 ...
- springboot中,使用redisTemplate操作redis
知识点: springboot中整合redis springboot中redisTemplate的使用 redis存数据时,key出现乱码问题 一:springboot中整合redis (1)pom. ...
- Java&Selenium 模拟鼠标方法封装
Java&Selenium 模拟鼠标方法封装 package util; import org.openqa.selenium.By; import org.openqa.selenium.W ...