首页 > 解决方案 > aspectj 注释不适用于 flink

问题描述

我创建了一个自定义注释来记录使用 aspectj 库和 spring 的方法所消耗的时间。

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

@Aspect
@Component
public class MyMethodPerformanceAspect {
    private static final Logger LOGGER = LoggerFactory.getLogger(MyMethodPerformanceAspect.class);

    public MyMethodPerformanceAspect() {
    }

    @Around("@annotation(MyMethodPerformance)")
    public Object logMethodPerfomance(ProceedingJoinPoint joinPoint) throws Throwable {
        Object var6;
        try {
            Long methodStartTime = System.currentTimeMillis();
            Object proceed = joinPoint.proceed();
            Long methodEndTime = System.currentTimeMillis();
            MethodSignature signature = (MethodSignature)joinPoint.getSignature();
            MDC.put("methodName", signature.getMethod().getName());
            MDC.put("className", signature.getMethod().getDeclaringClass().getName());
            MDC.put("duration", Long.toString(methodEndTime - methodStartTime));
            LOGGER.info("Method performance");
            var6 = proceed;
        } finally {
            MDC.clear();
        }

        return var6;
    }
}

我在 Spring Boot 应用程序中针对其余端点之一对其进行了测试,它工作正常。

但是当我在我的 flink 作业类中注释 map 方法时,它不起作用。

我在这里想念什么?

标签: springapache-flinkaspectj

解决方案


推荐阅读