基于springboot自定义日志注解

使用AOP实现自定义的日志注解

最近在学习反射和注解的使用,以及AOP思想,觉得自定义注解挺好玩的,在此记录一下学习经验
1.自定义注解
2.自定义AOP切面
3.使用自定义注解

自定义注解

//配置注解的使用范围,可以是数组类型
//这里配置的METHOD是表示可以使用再方法上,具体可以查看ElementType类
@Target(ElementType.METHOD)
//配置注解的有效期 RUNTIME表示运行期时有效
@Retention(RetentionPolicy.RUNTIME)
public @interface MyLogger {
    String value() default "";
}

自定义AOP切面

需要引入spring的aop包

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
/**
 * 自定义注解切面类
 */
//Aspect定义为切面类
@Aspect
//注入spring中
@Component
public class CustomAnnotationAspect {
    Logger logger = LoggerFactory.getLogger(CustomAnnotationAspect.class);
//    配置植入点 @annotation中配置注解类
    @Pointcut("@annotation(com.wzzx.basic.component.annotation.MyLogger)")
    public void MyLoggerAspect(){};
//   环绕通知  另外还有@Before @After
    @Around("MyLoggerAspect()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        //获取类名
        String className = joinPoint.getTarget().getClass().getName();
//        获取方法名
        String methodName = joinPoint.getSignature().getName();
//        获取入参
        Object []  array = joinPoint.getArgs();
        ObjectMapper objectMapper = new ObjectMapper();
        logger.info("调用前:"+className+":"+methodName+";入参:"+objectMapper.writeValueAsString(array));
        //调用方法,并获取返回值
        Object object=joinPoint.proceed();
        logger.info("调用后:"+className+":"+methodName+";返回值:"+objectMapper.writeValueAsString(object));
        return object;
    }
}

使用自定义注解

在方法上加上注解即可
在这里插入图片描述
查看后台打印输入的日志
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值