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

spring-boot(整合aop)

第一步导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

日志依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId>
</dependency>

 第二部开启自动代理

注意:在完成了引入AOP依赖包后,一般来说并不需要去做其他配置。使用过Spring注解配置方式的人会问是否需要在程序主类中增加@EnableAspectJAutoProxy来启用,实际并不需要。

因为在AOP的默认配置属性中,spring.aop.auto属性默认是开启的,也就是说只要引入了AOP依赖后,默认已经增加了@EnableAspectJAutoProxy。 

实例:日志切面

 //切面类

package com.zking.zmall.aop;import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;@Component
@Aspect
@Slf4j//自动注入日志对象,生成日志对象
public class WebLogAspect {//    @Pointcut 注解用于定义一个切点。//execution 是一个匹配连接点的表达式,这里用于匹配方法执行的连接点。//public * com.zking.zmall.web..*.*(..) 匹配所有在 com.zking.zmall.web 包及其子包下的公共方法。@Pointcut("(execution(public * com.zking.zmall.web..*.*(..))) || (execution(public * com.zking.zmall.controller..*.*(..)))")public void pointcut(){}@Before("pointcut()")public void before(JoinPoint joinPoint){ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if(attributes!=null){HttpServletRequest request = attributes.getRequest();log.info("请求地址URL:"+request.getRequestURL().toString());log.info("请求方式HTTP_METHOD:"+request.getMethod());log.info("客户端地址IP:"+request.getRemoteAddr());log.info("访问方法CLASS_METHOD:"+joinPoint.getSignature().getDeclaringTypeName());log.info("访问方法中的参数ARGS:"+ Arrays.toString(joinPoint.getArgs()));}}
}

启动程序即可查看日志信息 

http://www.lryc.cn/news/478222.html

相关文章:

  • qt QStatusBar详解
  • Docker Compose部署Powerjob
  • 前端使用PDF.js把返回的base64或二进制文件流格式,实现pdf文件预览
  • 如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?
  • 论文阅读笔记:Activating More Pixels in Image Super-Resolution Transformer
  • VSCode 与 HBuilderX 介绍
  • 《Vision Transformer with Deformable Attention》论文翻译
  • 爬虫下载网页文夹
  • 深入探讨钉钉与金蝶云星空的数据集成技术
  • 小语言模型介绍与LLM的比较
  • ThreadLocal从入门到精通
  • 小新学习k8s第六天之pod详解
  • 9、node.js和Lowdb
  • WebAPI编程(第五天,第六天,第七天)
  • 香港服务器网络延迟的测量指标包括哪些?
  • 【综合案例】使用React编写B站评论案例
  • 【AIGC】腾讯云语音识别(ASR)服务在Spring Boot项目中的集成与实践
  • 基于 Vue3、Vite 和 TypeScript 实现开发环境下解决跨域问题,实现前后端数据传递
  • 前端面筋(持续更新)
  • 深度学习-迁移学习
  • 6.0、静态路由
  • Redis学习:BitMap/HyperLogLog/GEO案例 、布隆过滤器BloomFilter、缓存预热+缓存雪崩+缓存击穿+缓存穿透
  • Lua数据类型
  • CSS中的背景色和前景色
  • 伊莱亚斯 M. 斯坦恩(Elias M. Stein)《复分析》与《实分析》教材
  • UCLA、MIT数学家推翻39年经典数学猜想!AI证明卡在99.99%,人类最终证伪
  • 大厂面试真题-很多系统会使用netty进行长连接,连接太多会有问题吗
  • Android RecyclerView ,使用ItemDecoration设置边距的大坑:左右边距不均匀/不同,已解决。
  • 系统上云-流量分析和链路分析
  • Apache 配置出错常见问题及解决方法