欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

springboot中如何引入AOP切面编程,

来源: javaer 分享于  点击 4463 次 点评:13

springboot中如何引入AOP切面编程,


目录
  • 1、首先确保已经添加了相关依赖
  • 2、创建切面类(Aspect)
  • 3、测试
  • 4、精细化切入
  • 总结

在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注解

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

您可能感兴趣的文章:
  • SpringBoot框架aop切面的execution表达式解读
  • SpringBoot AOP如何配置全局事务
  • springboot aop添加日志方式
  • springboot aop切到service层,不生效问题
  • SpringBoot AOP中JoinPoint的使用方式和通知切点表达式
相关栏目:

用户点评