Spring Boot Aop使用

这几天使用SpringBoot Aop 进行aop的使用 ,对其进行记录

注解:

建立链接:

@Aspect :表明是一个切面类

@Pointcut :切入点,PointCut(切入点)表达式有很多种,其中execution用于使用切面的连接点。

具体操作:

@Before :前置通知,在方法执行之前执行

@After :后置通知,在方法执行之后执行

@AfterRuturning :返回通知,在方法返回结果之后执行

@AfterThrowing :异常通知,在方法抛出异常之后执行

@Around :环绕通知,围绕着方法执行

特殊点解释:

Joinpoint(连接点):所谓连接点是指那些被拦截到的点,在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的连接点,通俗的说就是被增强类中的所有方法(上述具体操作都可以使用此方法进行接收,再对其进行解析。)

PointCut(切入点):所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义,通俗的说就是被增强类中的被增强的方法,因为被增强类中并不是所有的方法都被代理了

execution 表达式

例如:

@Pointcut("execution(public * com.ycm.testaop.service.Test.test(..))")

写到一个方法上如:

public void pointcut(){ }

在进行对其进行@AfterRuturning操作

@AfterRuturning(“pointcut()&& args(id,name)”)

public void test(JoinPoint jp,Long id,String name){

System.out.println(name);

}

解释:

 上述方法所在的类的需要加上 @Aspect与@Component  注解,声明为切面,交给spring容器进行管理。

@AfterRuturning(“pointcut()&& args(id,name)”) :

args 内为参数,上述由于切点为一个方法可以确定其传入参数,可以省略JoinPoint。

如:

@AfterRuturning(“pointcut()&& args(id,name)”)

public void test(,Long id,String name){

        System.out.println(name);

}

可正常运行:

在实际操作时通常为记录主要业务数据,切入点一般为一个接口的所有方法,从JoinPoint 内取出数据在做具体处理,不是主要业务则具体到一个方法进行处理。

execution(public * com.ycm.testaop.service.Test.test(..) 表达式

*代表所有返回类型,

(..)表示任意参数,后可接 args 。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值