Spring aop自定义注解

 
 
复制代码
// 自定义注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PrintLog {
    String method();
    String user() default "sys";
}

//aop
@Aspect
@Slf4j
@Component
public class PrintLogAop {

    @Pointcut("@annotation(com.chinawayltd.fms.util.PrintLog)")
    public void printLog(){};

    @Around("printLog()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
       Method method=((MethodSignature)joinPoint.getSignature()).getMethod();
       PrintLog printLog=method.getAnnotation(PrintLog.class);
       log.info("方法执行前,method={}; user={}",printLog.method(),printLog.user());
       Object o=joinPoint.proceed();
       log.info("方法执行完");
       return o;
    }
}

//使用
@RestController
@RequestMapping("/log")
public class PrintLogController {

    @GetMapping("/print")
    @PrintLog(method = "ok")
    public String ok(){
        return "ok";
    }
}
复制代码

 

posted @   hjy1995  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示