aop日志控制

(spring boot)使用AOP切面实现日志的注入

在此之前需要引入相应的依赖(spring aop)

org.springframework.boot
spring-boot-starter-aop

注解说明

@Aspect:作用是把当前类标识为一个切面供容器读取
前置通知(@Before):在目标方法被调用之前调用通知功能。
后置通知(@After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么。
返回通知(@After-returning):在目标方法成功执行之后调用通知。
异常通知(@After-throwing):在目标方法抛出异常后调用通知。
环绕通知(@Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为。

execution切点函数

通过方法签名定义切点
execution(public * (..)) 匹配所有目标类的public方法。 第一个代表返回类型,第二个*代表方法名,而..代表任意入参的方法
execution(* To(..)) 匹配目标类所有以To为后缀的方法。 第一个代表返回类型,而*To代表任意以To为后缀的方法。

连接点(Joinpoint)

程序执行的某个特定位置(如:某个方法调用前、调用后,方法抛出异常后)。一个类或一段程序代码拥有一些具有边界性质的特定点,这些代码中的特定点就是连接点。Spring仅支持方法的连接点

实现切面注入日志类

package *.*.*;

import java.text.SimpleDateFormat;
import java.util.Date;

import *.LoggerHelper;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LoggingAspect {

    @Pointcut("execution(public * com.api.XXXApi.*(..))")//切入点描述 这个是api包的切入点(注入需要监听的API)
    public void apiLog(){
        //可以理解成这个切入点的一个名称
    }

    @Before("apiLog()") //在切入点的方法运行之前要执行的方法(通过注解实现)
    public void doBeforeApi(JoinPoint joinPoint) {
        LoggerHelper.info("方法:"+joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName() +"开始执行时间==》"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }

    @After("apiLog()") //在切入点的方法运行之前要做的
    public void DoBfterApi(JoinPoint joinPoint) {
        LoggerHelper.info("方法:"+joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()+"结束时间==》"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做紧咩嘢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值