class MeterCounterInterceptor extends BaseMeterInterceptor<MeterCounter,Counter> {

    @Override
    protected MeterCounter getAnno(Invocation inv) {<FILL_FUNCTION_BODY>}

    @Override
    protected String getAnnoName(MeterCounter anno) {
        return Utils.annoAlias(anno.value(), anno.name());
    }

    @Override
    protected Object metering(Invocation inv, MeterCounter anno) throws Throwable {
        String meterName = getMeterName(inv, anno);
        Counter meter = getMeter(meterName,()->{
            return Counter.builder(meterName)
                    .baseUnit(anno.unit())
                    .description(anno.description())
                    .tags(getMeterTags(inv, anno.tags()))
                    .register(Metrics.globalRegistry);
        });

        try {
            return inv.invoke();
        } finally {
            //计数
            meter.increment();
        }
    }
}

        MeterCounter anno = inv.getMethodAnnotation(MeterCounter.class);
        if (anno == null) {
            anno = inv.getTargetAnnotation(MeterCounter.class);
        }

        return anno;
    
<methods>public non-sealed void <init>() ,public java.lang.Object doIntercept(org.noear.solon.core.aspect.Invocation) throws java.lang.Throwable<variables>private final Map<java.lang.String,io.micrometer.core.instrument.Counter> meterCached