Springboot使用自定义注解实现系统日志处理

在日常项目开发中,系统的日志处理是必不可少的,最近因项目需要,在项目中添加了系统处理日志。
文章来源:https://blog.csdn.net/qq_23167527/article/details/78623163
1、主要原理还是利用AOP的原理,因此需要在项目中定义一个切面类,需要使用到@Aspect注解,在pom.xml中添加jar包:spring-boot-starter-aop
在这里插入图片描述
2、书写自定义注解,可以更具自己的需求来写
在自定义注解中,长会使用到以下三个注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
作用就不在说明,自定查阅资料
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 服务层日志注解,加载方法上
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SystemServicesLog {
    String value();
}

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 控制层日志注解,添加在方法上
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SystemControllerLog {
    String value();
}

3、切面类的实现

import com.mp.web.annotation.SystemControllerLog;
import com.mp.web.annotation.SystemServicesLog;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

/**配置日志切面类,@Aspect把当前类标识为一个切面类工容器读取*/
@Aspect
@Component
public class MpLogAop {

    /**
     * 使用后置通知,并配置切入点表达式,联合自定义控制层日志注解,记录日志
     * @param joinPoint
     * @param systemControllerLog
     */
    @After("execution(* com.mp.web.controller.*.*(..)) && @annotation(systemControllerLog)")
    public void afterControllerLog(JoinPoint joinPoint,SystemControllerLog systemControllerLog){
        String logValue = systemControllerLog.value();
        System.out.println("后置通知开始执行==》控制层日志log==》用户执行了【"+logValue+"】操作");
    }

    /**
     * 使用后置通知以及自定义服务层日志注解,记录服务层操作日志
     * @param joinPoint
     * @param systemServicesLog
     */
    @After("execution(* com.mp.web.services.*.*(..)) && @annotation(systemServicesLog)")
    public void afterServiceLog(JoinPoint joinPoint,SystemServicesLog systemServicesLog){
        String logValue = systemServicesLog.value();
        System.out.println("后置通知开始执行==》服务层日志log==》用户执行了【"+logValue+"】操作");
    }
}

注意,以下红色框中的名称需要相同
在这里插入图片描述
4、准备工作做好后,就可以使用自定义的注解添加在服务层或者控制层的方法上
在这里插入图片描述
在这里插入图片描述
5、运行项目,打印日志
在这里插入图片描述
可以看到自定义注解以及切面类已经实现。
在别处看到这种方法,一次文章来作为自己的笔记,写的不好,欢迎拍砖。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值