springboot中如何引入AOP切面编程

 更新时间:2024年05月13日 08:46:58   作者:恋上钢琴的虫  
这篇文章主要介绍了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注解

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 线程池核心参数、执行流程与实战建议全解析

    Java 线程池核心参数、执行流程与实战建议全解析

    主要介绍了 Java 线程池:核心参数、执行流程与实战建议,我将用最通俗的方式带你搞懂 Java 线程池,从构造函数开始,讲透执行机制、参数配置,再结合我在真实项目中的使用经验,总结出一套实战建议,需要的朋友可以参考下
    2025-04-04
  • Java与JavaScript自动化测试Selenium使用详解

    Java与JavaScript自动化测试Selenium使用详解

    这篇文章主要介绍了Java与JavaScript自动化测试Selenium的使用,Selenium是一个用于Web应用程序测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,需要的朋友可以参考下
    2025-05-05
  • 解决@DateTimeFormat格式化时间出错问题

    解决@DateTimeFormat格式化时间出错问题

    这篇文章主要介绍了解决@DateTimeFormat格式化时间出错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 聊聊Redis的单线程模型

    聊聊Redis的单线程模型

    Redis是单线程,主要是指Redis的网络IO和读写是由一个线程来完成的,但Redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。这不是本文讨论的重点,有个印象即可
    2022-12-12
  • SpringMVC 中HttpMessageConverter简介和Http请求415 的问题

    SpringMVC 中HttpMessageConverter简介和Http请求415 的问题

    本文介绍且记录如何解决在SpringMVC 中遇到415 Unsupported Media Type 的问题,并且顺便介绍Spring MVC的HTTP请求信息转换器HttpMessageConverter
    2016-07-07
  • IDEA 2020.2 部署JSF项目的详细过程

    IDEA 2020.2 部署JSF项目的详细过程

    本文通过图文并茂的形式教大家如何在IDEA中创建一个JSF项目及遇到问题的解决方法,感兴趣的朋友跟随小编一起看看吧
    2021-09-09
  • java两个线程同时写一个文件

    java两个线程同时写一个文件

    这篇文章主要为大家详细介绍了java两个线程同时写一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • jenv实现mac下多版本jdk管理以及切换方式

    jenv实现mac下多版本jdk管理以及切换方式

    文章介绍在Mac上使用jenv管理多版本JDK的方法,包括下载安装指定JDK版本、配置环境变量及切换操作,同时说明Maven和IDEA的JDK配置步骤,确保不同项目使用正确版本,涉及路径设置、项目SDK及Maven参数配置
    2025-08-08
  • 使用Java实现6种常见负载均衡算法

    使用Java实现6种常见负载均衡算法

    Java负载均衡算法也是分布式系统中的重要组成部分,用于将来自客户端的请求分配到不同的后端服务器上,本文将介绍常见的Java负载均衡算法,轮询法、加权随机法……一次性让你了解 6 种常见负载均衡算法
    2023-06-06
  • elasticsearch kibana简单查询讲解

    elasticsearch kibana简单查询讲解

    今天小编就为大家分享一篇关于elasticsearch kibana简单查询讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02

最新评论