使用带注释的Aspect时遇到问题。 Aspect方法是在某些方法中触发的,但在某些其他方法中不会触发。 我检查的是方法是公共的,它不起作用的类是@Component。
@Aspect
@Component
public class PrometheusCounterMetricAspect {
private static final Map<String, Counter> counters = new HashMap<>();
@Before(
"execution(* *(..)) && @annotation(package.aspects.PrometheusCounterMetric)")
void beforeInsert(JoinPoint joinPoint) {
.....}
这是注释界面
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PrometheusCounterMetric {
String metricName();
}
在项目中,流程是控制器->服务->存储。尽管它是组件,但它可以在服务中工作,但不能在存储中工作。