springboot中如何引入AOP切面编程
在Spring Boot 3.0中引入AOP的过程
如下所示:
1、首先确保已经添加了相关依赖
可以通过Maven或Gradle来管理项目的依赖。
对于使用Maven构建的项目,需要将以下依赖添加到pom.xml文件中
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
2、创建切面类(Aspect)
并定义切点(Pointcut)、前置通知(Before Advice)等逻辑。
切面类应该被注解为@Component
,这样才能被自动扫描到。
在com.lingyi.mybatis.aop包下创建一个TimeCustomAspect.java的AOP类,增强方法执行的行为。
package com.lingyi.mybatis.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; import java.util.Arrays; /** * 自定义aop切面 */ @Aspect @Component public class TimeCustomAspect { @Before("execution(* com.lingyi.mybatis.controller.*.*())") //包com.lingyi.mybatis.controller下的所有类和类中的方法都满足该AOP的条件 public void beforeAdvice(){ System.out.println("方法执行前....."); } @After("execution(* com.lingyi.mybatis.controller.*.*())") public void afterAdvice(){ System.out.println("方法执行后......."); } @Around("execution(* com.lingyi.mybatis.controller.*.*())") public Object recordTimeCustom(ProceedingJoinPoint pjp) throws Throwable{ long start = System.currentTimeMillis(); Object result = pjp.proceed(); long end = System.currentTimeMillis(); String className = pjp.getTarget().getClass().getName(); String method = pjp.getSignature().getName(); String args = Arrays.toString(pjp.getArgs()); System.out.println("类:"+className + ",方法:"+method +",参数:"+args +",执行耗时:"+ (end - start)); return result; } }
3、测试
登录swagger UI界面,访问controller层某个接口。下面已/person接口为例
http://127.0.0.1:8081/swagger-ui/index.html
经过测试,编写的AOP切面编程程序生效,AOP会根据切点表达式自动进行切面处理。
当符合条件的方法调用发生时,就会执行相应的通知逻辑。
4、精细化切入
为了更加精细化对指定方法进行切入,切面还可以针对某些注解进行切入,从而实现对指定方法进行增强。
在方法上添加@Loggin注解
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
使用java8 API遍历过滤文件目录及子目录和隐藏文件示例详解
这篇文章主要介绍了使用java8API遍历过滤文件目录及子目录及隐藏文件示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-07-07mybatis-plus常用注解@TableId和@TableField的用法
本文主要介绍了mybatis-plus常用注解@TableId和@TableField的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-04-04jdk8 FunctionalInterface注解源码解读
这篇文章主要介绍了jdk8 FunctionalInterface注解源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-11-11Kotlin + Retrofit + RxJava简单封装使用详解
这篇文章主要介绍了Kotlin + Retrofit + RxJava简单封装使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-07-07解决springmvc+mybatis+mysql中文乱码问题
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下2015-09-09
最新评论