当前位置: 首页 > news >正文

Java面试题储备14: 使用aop实现全局日志打印

  1. 引入依赖

     <!-- aop --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>2.6.6</version> </dependency>
    
  2. 切面代码

@Aspect
@Component
@Slf4j
@EnableAspectJAutoProxy(proxyTargetClass = true,exposeProxy = true)
public class UmpMonitorAspect {private static String  UMP_APP_NAME = "super-applet";/*** 需要拦截的*/@Pointcut("execution(public * com.a..*.*(..)) ")public void include() {}/*** 不需要拦截的 */@Pointcut("execution(public * com.b.*.start..*(..))")public void exclude() {}/*** 切面*/@Pointcut("exclude() && !include() ||\n")public void checkAlarmAnnotation() {}@Around(value = "checkAlarmAnnotation()")public Object umpMonitorRecorder(ProceedingJoinPoint joinPoint) throws Throwable {String packageName = joinPoint.getSignature().getDeclaringTypeName();String methodName = joinPoint.getSignature().getName();String key =packageName + CommonConstants.DOT + methodName;CallerInfo info = Profiler.registerInfo(key);try {// log.debug("ump注解形式开启,key:{},umpAppName:{}", key, UMP_APP_NAME);return joinPoint.proceed();} catch (Throwable throwable) {Profiler.functionError(info);throw throwable;} finally {Profiler.registerInfoEnd(info);}}
}

通过注解

@Pointcut("execution(public * com.a….(…)) ")
切入点,后面复制需要切入的包的路径,比如此时就是要拦截所有包a下的数据请求

@Before(“com.a.controller.") - 打印接口入参
@After("com.a.controller.
”) - 打印接口出参
@Around(value = “checkAlarmAnnotation()”) - 环绕通知

http://www.dtcms.com/a/338392.html

相关文章:

  • Nodejs学习
  • 【SkyWalking】单节点安装
  • Linux命令大全-rmdir命令
  • Java中的 “128陷阱“
  • vue从入门到精通:轻松搭建第一个vue项目
  • go语言条件语if …else语句
  • rem 响应式布局( rem 详解)
  • 鼠标右键没有“通过VSCode打开文件夹”
  • FreeRTOS【3-1】创建第一个多任务程序复习笔记
  • STM32驱动SG90舵机全解析:从PWM原理到多舵机协同控制
  • Sring框架-IOC篇
  • ​​Java核心知识体系与集合扩容机制深度解析​
  • JavaSE高级-02
  • JDBC的使用
  • 【Python】Python Socket 网络编程详解:从基础到实践​
  • Street Crafter 阅读笔记
  • IDEA创建项目
  • MYSQL中读提交的理解
  • MySQL新手教学
  • lesson41:MySQL数据库进阶实战:视图、函数与存储引擎全解析
  • springBoot启动报错问题汇总
  • OVS:ovn是如何支持组播的?
  • LwIP 核心流程总结
  • wishbone总线
  • thinkphp8:一、环境准备
  • c++26新功能—可观测检查点
  • torch.nn.Conv1d详解
  • C++最小生成树
  • 高等数学 8.5 曲面及其方程
  • Python打卡Day45 预训练模型