zoukankan      html  css  js  c++  java
  • java自定义注解的使用-基于AOP的自定义日志配置

    话不多说直接上代码:

    注解类:

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface MyLog {
    
    }

    代理类:

    @Component
    @Aspect
    public class LogAspects {
    @Pointcut("@annotation(com.example.demo.aop.MyLog)")
    public void pointCut() {
        
    }
    @Before("pointCut()")
    public void beforeMethod() {
        System.out.println("before方法执行中。。。。。。");
    }
    @After("pointCut()")
    public void afterMethod() {
        System.out.println("after方法执行中。。。。。。");
    }
    @AfterReturning("pointCut()")
    public void afterReturningMethod() {
        System.out.println("afterReturning方法执行中。。。。。。");
    }
    @AfterThrowing("pointCut()")
    public void afterThrowingMethod() {
        System.out.println("afterThrowing方法执行中。。。。。。");
    }
    @Around("pointCut()")
    public Object aroundThrowingMethod(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        System.out.println("Around之前的方法执行中。。。。。。");
        Object o = proceedingJoinPoint.proceed();
        System.err.println(o);
        System.out.println("Around之后的方法执行中。。。。。。");
        return o;
    }
    }

    controller层:

    @RestController
    public class LogTestController {
        @MyLog
        @GetMapping("/logTest")
        public String logTest(@RequestParam("id") int id, @RequestParam("name") String name) {
            System.out.println("id:" + id + "   " + "name:" + name);
            return id+name;
        }
    }

    说白了就是那个方法上标注了MyLog注解就代理谁

  • 相关阅读:
    linux下ls出现文件的后缀有@,* ,/之类的解释
    对shell中cat 和EOF的理解
    linux中test的意义 又可以表示为[]
    Python程序中的进程操作-进程同步(multiprocess.Lock)
    Python程序中的进程操作-开启多进程
    进程的创建和结束
    同步异步阻塞非阻塞
    进程的并行和并发
    进程的调度
    进程基础
  • 原文地址:https://www.cnblogs.com/mcjhcnblogs/p/13210449.html
Copyright © 2011-2022 走看看