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

SpringBoot整合AOP

没事做个Demo案例,首先看下项目结构:

第1步,导入依赖:

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

第2步,编写测试类:

@Controller
@RequestMapping("/demo")
public class JNTestDemo {@RequestMapping("/test")@ResponseBodypublic String testMethod(){System.out.println("this is a test method");return "index";}}

第3步,编写Aop配置类:

package com.zhongji.jisuanji22.config;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;@Aspect
@Component
public class AopConfig {@Pointcut("execution(* com.zhongji.jisuanji22.controller.*.*(..))")public void aop(){}@Before("aop()")public void beforeAdvice(){System.out.println("前置通知");}@After("aop()")public void afterAdvice(){System.out.println("后置通知");}@Around("aop()")public Object aroundAdvice(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {System.out.println("环绕通知前");Object o = proceedingJoinPoint.proceed();System.out.println("环绕通知后");return o;}
}

第4步,访问Controller接口路径,得到测试:

控制台输出为:

至此,基本的使用方法完成。

【注:如果传参的话,可参考下列步骤】

1、控制层被测试的方法变化为:

    @RequestMapping("/test/{prama}")@ResponseBodypublic String testMethod(@PathVariable String prama){System.out.println("this is a test method"+prama);return "index";}

2、以前置通知为测试方法,则AOP的配置类为:

package com.zhongji.jisuanji22.config;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;@Aspect
@Component
public class AopConfig {@Pointcut("execution(* com.zhongji.jisuanji22.controller.*.*(..)) && args(prama,..)")public void aop(String prama){}@Before(value = "aop(prama)")public void beforeAdvice(String prama){System.out.println("前置通知:"+prama);}@After("aop(String)")public void afterAdvice(){System.out.println("后置通知");}@Around("aop(String)")public Object aroundAdvice(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {System.out.println("环绕通知前");Object o = proceedingJoinPoint.proceed();System.out.println("环绕通知后");return o;}
}

3、再次执行测试接口:

我们发现控制台:

我们看到,参数已经由Controller层传到了AOP指定的方法中。

http://www.xdnf.cn/news/1570.html

相关文章:

  • Tomcat:从零理解Java Web应用的“心脏”
  • 健康养生小窍门
  • 微高压氧舱VS高压氧舱:氧气疗法的“双生花”如何重塑健康?
  • 【前端】基于 Promise 的 HTTP 客户端工具Axios 详解
  • MVCC详解
  • 【前端】【业务场景】【面试】在前端开发中,如何实现文件的上传与下载功能,并且处理可能出现的错误情况?
  • 机械手排列定位设备 PLC梯形图流程
  • 乐聚机器人与地瓜机器人达成战略合作,联合发布Aelos Embodied具身智能
  • UE5 Assimp 自用
  • ragflow部署以及api调用整理
  • java—13 RocketMQ
  • 拥抱健康生活,解锁养生之道
  • 某城乡老旧房屋试点自动化监测服务项目
  • 关于边缘计算盒子的外部接口保护
  • Python 的 datetime 模块使用详解
  • Redisson实战:分布式系统中的五大典型应用场景
  • 来访登记二维码生成
  • 数据一致性问题剖析与实践(二)——单机事务的一致性问题
  • MySQL的日志--Redo Log【学习笔记】
  • OpenCV 图形API(60)颜色空间转换-----将图像从 YUV 色彩空间转换为 RGB 色彩空间函数YUV2RGB()
  • PyQt6实例_A股财报数据维护工具_使用
  • 【TeamFlow】4.3.4 长度单位
  • 【大数据技术-联邦集群RBF】DFSRouter日志一直打印修改Membership为EXPIRED状态的日志分析
  • UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025
  • Sql文件处理SQLDumpSplitter
  • mojoPortal 接口imagehandler任意文件读取漏洞(CVE-2025-28367)
  • 【Java面试笔记:基础】9.对比Hashtable、HashMap、TreeMap有什么不同?
  • OpenCV 图形API(55)颜色空间转换-----将图像从 RGB 色彩空间转换为 I420 格式函数RGB2I420()
  • 计算机网络笔记(七)——1.7计算机网络体系结构
  • Linux系统学习----概述与目录结构